python regex适用于regex101但不适用于python2

tywtw2002

我创建了一个正则表达式来匹配电视节目的中英文名称。

我的正则表达式位于https://regex101.com/r/rBJHDG,它在正则表达式上工作完美,但是这个正则表达式在 python2 中不起作用。

有关示例,字符串亿万.Billions.S01E01.中英字幕.HDTVrip.1024X576.mp4的正则表达式是不匹配亿万name_chs在期待,而不是它匹配亿万.Billionsname_en

In [68]: r = '^(?P<name_chs>(?:[\\u3007\\u4e00-\\u9fff\\u3400-\\u4dbf\\uf900-\\ufaff]+)(?=\\.))?(?P<name_en>\\S+).S(?P<season>\\d{2})E(?P<episode>\\d{2})'

In [69]: re.match(r, u'亿万.Billions.S01E01.中英字幕.HDTVrip.1024X576.mp4').grou
    ...: pdict()
Out[69]:
{'episode': u'01',
 'name_chs': None,
 'name_en': u'\u4ebf\u4e07.Billions',
 'season': u'01'}

第二个问题:

怎么去掉中文名和英文名之间.in name_enwhich。

# 亿万.Billions.S01E01.中英字幕.HDTVrip.1024X576.mp4
Full match  0-18    `亿万.Billions.S01E01`
Group `name_chs`    0-2 `亿万`
Group `name_en` 2-11    `.Billions`   <---- This DOT!
Group `season`  13-15   `01`
Group `episode` 16-18   `01`
S.阿尔达里斯

看起来问题在于正则表达式测试器包含globalmultiline标志,但您的代码没有。如果您在正则表达式测试器中取消选中这两个标志,您会发现测试器与您当前的结果相匹配。

你可以试试 r = '^(?P<name_chs>(?:[\\u3007\\u4e00-\\u9fff\\u3400-\\u4dbf\\uf900-\\ufaff]+)(?=\\.))?(?P<name_en>\\S+).S(?P<season>\\d{2})E(?P<episode>\\d{2})', re.MULTILINE)

re.search(r, u'亿万.Billions.S01E01.中英字幕.HDTVrip.1024X576.mp4').grou
    ...: pdict()

至于你的第二个问题:

我只想通过(.)在英文名称前面添加使该点成为自己的捕获组,就像这样......

^(?P<name_chs>(?:[\u3007\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]+)(?=\.))?(.)(?P<name_en>\S+).S(?P<season>\d{2})E(?P<episode>\d{2})

现在,当您打印英文名称时,它只会是单词,因为点在它自己的捕获组中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pip适用于python2.7,但不适用于3.5

来自分类Dev

Python代码适用于2.7,但不适用于3.5

来自分类Dev

Python代码适用于2.7,但不适用于3.5

来自分类Dev

googlemaps api适用于python终端,但不适用于脚本

来自分类Dev

pyspark saveAsTextFile适用于python 2.7,但不适用于3.4

来自分类Dev

scikit-learn仅适用于python 2,而不适用于python 3

来自分类Dev

Scikit-learn仅适用于python 2,而不适用于python 3

来自分类Dev

windows API 不适用于 python3,但适用于 python 2

来自分类Dev

用于解析文件的Python函数仅适用于单个文件,但不适用于批处理

来自分类Dev

单击不适用于python硒

来自分类Dev

PyDev不适用于Python 3.2

来自分类Dev

高斯拟合不适用于Python

来自分类Dev

python爬虫不适用于asyncio

来自分类Dev

Notepad ++不适用于Python

来自分类Dev

Webdriver不适用于Selenium(Python)

来自分类Dev

PyDev不适用于Python 3.2

来自分类Dev

PyQuery Python不适用于for循环

来自分类Dev

Python字典不适用于'pass'

来自分类Dev

pip3适用于python3.2,但不适用于python3.3

来自分类Dev

maplotlib.pyplot.show() 适用于 python 但不适用于 jupyter 控制台

来自分类Dev

文件上传适用于 curl 和邮递员,但不适用于 python 请求

来自分类Dev

RESTful API 请求适用于 Python 和浏览器,但不适用于 VB.Net

来自分类Dev

Ubuntu-找不到适用于python2的PySide模块,但适用于python3

来自分类Dev

Python代码仅适用于标题标签,不适用于表格

来自分类Dev

Python Queue的用法适用于线程处理,但(显然)不适用于多处理

来自分类Dev

python Matplotlib烛台图仅适用于每日数据,不适用于日内

来自分类Dev

RTSP流不适用于python,但适用于VLC。为什么?

来自分类Dev

python Matplotlib烛台图仅适用于每日数据,不适用于日内

来自分类Dev

编码适用于 1 而不适用于 Twitter 中使用 python 的其他列表

Related 相关文章

  1. 1

    pip适用于python2.7,但不适用于3.5

  2. 2

    Python代码适用于2.7,但不适用于3.5

  3. 3

    Python代码适用于2.7,但不适用于3.5

  4. 4

    googlemaps api适用于python终端,但不适用于脚本

  5. 5

    pyspark saveAsTextFile适用于python 2.7,但不适用于3.4

  6. 6

    scikit-learn仅适用于python 2,而不适用于python 3

  7. 7

    Scikit-learn仅适用于python 2,而不适用于python 3

  8. 8

    windows API 不适用于 python3,但适用于 python 2

  9. 9

    用于解析文件的Python函数仅适用于单个文件,但不适用于批处理

  10. 10

    单击不适用于python硒

  11. 11

    PyDev不适用于Python 3.2

  12. 12

    高斯拟合不适用于Python

  13. 13

    python爬虫不适用于asyncio

  14. 14

    Notepad ++不适用于Python

  15. 15

    Webdriver不适用于Selenium(Python)

  16. 16

    PyDev不适用于Python 3.2

  17. 17

    PyQuery Python不适用于for循环

  18. 18

    Python字典不适用于'pass'

  19. 19

    pip3适用于python3.2,但不适用于python3.3

  20. 20

    maplotlib.pyplot.show() 适用于 python 但不适用于 jupyter 控制台

  21. 21

    文件上传适用于 curl 和邮递员,但不适用于 python 请求

  22. 22

    RESTful API 请求适用于 Python 和浏览器,但不适用于 VB.Net

  23. 23

    Ubuntu-找不到适用于python2的PySide模块,但适用于python3

  24. 24

    Python代码仅适用于标题标签,不适用于表格

  25. 25

    Python Queue的用法适用于线程处理,但(显然)不适用于多处理

  26. 26

    python Matplotlib烛台图仅适用于每日数据,不适用于日内

  27. 27

    RTSP流不适用于python,但适用于VLC。为什么?

  28. 28

    python Matplotlib烛台图仅适用于每日数据,不适用于日内

  29. 29

    编码适用于 1 而不适用于 Twitter 中使用 python 的其他列表

热门标签

归档