推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
fee
V2EX  ›  Python

写了一个正则,在 Atom 里面显示是可以匹配的,但是在 Pycharm 里面运行就不对了

  •  
  •   fee · Aug 20, 2018 · 3871 views
    This topic created in 3006 days ago, the information mentioned may be changed or developed.
    我写的正则是: https://.+?(jpg|gif)
    然后要匹配的地址是一串如: https:///i.imgur.com/TA3T3gU.gif ; https://i.redd.it/msevs1zayzg11.jpg ; https://i.redd.it/msevs1zayzg11.jpg 。。。
    在 Atom 里面试验的时候是可以匹配的。但是 pycharm 里面运行错误,我把匹配的结果打印出来显示是:['gif', 'jpg', 'jpg', 'jpg', 'jpg', 'gif', 'jpg', 'jpg'...]
    也就是只匹配了(jpg|gif)
    是什么情况,大家能指点下么?
    11 replies  •  2018-08-20 14:47:04 +08:00
    Xiaobaixiao
    Xiaobaixiao
    Aug 20, 2018❤️1
    1
    我猜你用的是 re.findall()
    fee
    fee
    OP
    Aug 20, 2018
    2
    @Xiaobaixiao 是的。。
    wizardoz
    wizardoz
    Aug 20, 2018❤️1
    3
    ( https://.+?(?:jpg|gif))
    这样行不?
    whusnoopy
    whusnoopy
    Aug 20, 2018❤️2
    4
    因为 Python 需要用圆括号括起来你要匹配的部分,参考下面

    ```python
    >>> re.findall(r'( https://.+?(jpg|gif))', 'https:///i.imgur.com/TA3T3gU.gif ; https://i.redd.it/msevs1zayzg11.jpg ; https://i.redd.it/msevs1zayzg11.jpg')
    [('https:///i.imgur.com/TA3T3gU.gif', 'gif'), ('https://i.redd.it/msevs1zayzg11.jpg', 'jpg'), ('https://i.redd.it/msevs1zayzg11.jpg', 'jpg')]
    ```
    JHerschel
    JHerschel
    Aug 20, 2018❤️2
    5
    chroming
    chroming
    Aug 20, 2018 via Android
    6
    ()是正则分组
    ooleslie
    ooleslie
    Aug 20, 2018
    7
    @whusnoopy 为啥匹配出来的结果会多 gif 和 jpg 的结果,是因为 findall 的正则有内外两个括号么?
    dartabe
    dartabe
    Aug 20, 2018
    8
    我最近也在学这个 感觉 findall 各种坑 finditer 就是好好的
    whusnoopy
    whusnoopy
    Aug 20, 2018❤️1
    9
    @ooleslie 是的,Python 里的括号是分组,这里有内外两个括号就是匹配出这两个组
    ooleslie
    ooleslie
    Aug 20, 2018
    10
    @dartabe 我是跟着韦炜那本书学的,讲得太粗糙了
    dartabe
    dartabe
    Aug 20, 2018
    11
    @ooleslie 前面那个答案比较好 如果用 findall 的话 就用(?: jpg|gif)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4964 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 02:14 · PVG 10:14 · LAX 18:14 · JFK 21:14
    ♥ Do have faith in what you're doing.