跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python3 正则表达式问题
未分類
30 9 月 2020

Python3 正则表达式问题

Python3 正则表达式问题

資深大佬 : WaterWestBolus 3

Python3 re 模块的问题

import re s="![](/img/2020pic/02/1.jpg) 以及: ![](/img/2020pic/02/2.png)" pattern = re.compile('[(](.+?)(:?.png|.jpg)[)]') result = pattern.findall(s) for i in result:     print(i) 

匹配出来的结果如下

('/img/2020pic/02/1', '.jpg') ('/img/2020pic/02/2', '.png') 

请问为什么每个匹配项会被分成一个元组,如果想要独立的抓出 /img/2020pic/02/1.jpg 和另一个 png,应该怎么改呢?

大佬有話說 (14)

  • 資深大佬 : ysc3839

    最后一句话是什么意思呢?能否举个例子?

  • 主 資深大佬 : WaterWestBolus

    @ysc3839 就是说,我想写个正则表达式,从上面那个 s 里面取出“`/img/2020pic/02/1.jpg“`字段和“`/img/2020pic/02/2.png“`字段,放在一个 list 里面,预期的 list 应该如下

    “`
    [‘/img/2020pic/02/1.jpg’,’/img/2020pic/02/2.png’]
    “`

  • 資深大佬 : 1462326016

    也许可以这样?
    “`
    import re

    s = “![](/img/2020pic/02/1.jpg) 以及: ![](/img/2020pic/02/2.png)”
    pattern = re.compile(r'((.+?[.png|.jpg]))’)
    result = pattern.findall(s)
    for i in result:
    print(i)
    “`

    排版可能会乱。。。回复好像不支持 markdown

  • 主 資深大佬 : WaterWestBolus

    @1462326016
    谢谢你的回复,刚刚尝试了你的代码,在 s = ‘ (( RubberPencil) p).write(“Hello”);’的情况下居然能匹配到字符串'( RubberPencil) p’,非常费解。。

  • 資深大佬 : ysc3839

    @WaterWestBolus #2
    试试这样?
    ![.*?](.+?)

    https://regex101.com/r/Z0dhS7/1

  • 資深大佬 : iNaru

    (?<=().+?.(?:jpg|png)(?=))

  • 資深大佬 : AlisaDestiny

    In [2]: p = re.compile(r'((.+?.(?:jpg|png)))’)

    In [3]: p.findall(s)
    Out[3]: [‘/img/2020pic/02/1.jpg’, ‘/img/2020pic/02/2.png’]

  • 主 資深大佬 : WaterWestBolus

    @iNaru 感谢!可用!正则好难看明白。。我研究一下

    @ysc3839 这个可以了!但是好像没有把 png jpg 硬编进去?也不是太看的明白。。

    @AlisaDestiny 谢谢! 有空去尝试

  • 資深大佬 : ysc3839

    @WaterWestBolus #8
    看上去你给的例子是 Markdown 中图片的格式,我是按照这个格式的规则来写的,所以没有考虑 png 和 jpg 。
    如果要加上

  • 資深大佬 : ysc3839

    @ysc3839 (刚才不小心点到回复了)
    如果要加上的话
    ![.*?]((.+?.(jpg|png)))

  • 資深大佬 : JCZ2MkKb5S8ZX9pq

    re.compile(r'(?<=]().*?.(?:png|jpg)(?=))’)
    我试了下这样可以

  • 資深大佬 : brucmao

    @WaterWestBolus #8 6 用了环视,(?<=().+?.(?:jpg|png)(?=))
    (?<=() 匹配前面是(
    (?=)) 匹配后面是)

  • 資深大佬 : krixaar

    目的是要一个 list,不一定非得从正则本身下手吧。result = [”.join(i) for i in pattern.findall(s)] 就直接搞定了?

  • 資深大佬 : chaogg

    >>> pattern = re.compile(r’![.*?]((.+?.(?:jpg|png)))’)
    >>> pattern.findall(s)
    [‘/img/2020pic/02/1.jpg’, ‘/img/2020pic/02/2.png’]

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具