私はテレビ番組の中国語と英語の名前に一致する正規表現を作成します。python regexはregex101で動作しますが、python2では動作しません
私の正規表現はhttps://regex101.com/r/rBJHDGにありますが、これは正規表現では問題なく動作しますが、この正規表現はpython2では動作しません。例については
、文字列亿万.Billions.S01E01.中英字幕.HDTVrip.1024X576.mp4
正規表現ではなく、それはname_en
として亿万.Billions
と一致し、期待にname_chs
として亿万
と一致していません。
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'}
2番目の質問:
中国名と英語名の間name_en
で.
を削除する方法。
# 亿万.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`