gpt4 book ai didi

python - 如何阻止 python 正则表达式过于贪婪

转载 作者:行者123 更新时间:2023-11-28 23:04:46 25 4
gpt4 key购买 nike

我正在尝试匹配(在 Python 中)电视节目文件名中的节目名称和季节/剧集编号,格式如下:

Show.One.S01E05.720p.HDTV.x264-CTU.mkv

Show.Two.S08E02.HDTV.XviD-LOL.avi

我的正则表达式:

(?P<show>[\w\s.,_-]+)\.[Ss]?(?P<season>[\d]{1,2})[XxEe]?(?P<episode>[\d]{2})

在 Show Two 上正确匹配给我 Show Two , 0802 .但是 Show One 中的 720 意味着我回来了 720季节/剧集。

如果我删除 ?[XxEe] 之后然后它匹配两种类型,但我希望该范围对于不包含剧集标识符的文件名是可选的。

我试过使用 ??停止 [XxEe]匹配贪婪,如 python 文档中所列 re模块部分,但这没有效果。

如何在忽略字符串的其余部分的同时捕获系列名称部分和季节/剧集部分?

最佳答案

改变第一场比赛的贪婪度:

 p=re.compile('(?P<show>[\w\s.,_-]+?)\.[Ss]?(?P<season>[\d]{1,2})[XxEe]?(?P<episode>[\d]{2})')
print p.findall("Game.of.Thrones.S01E05.720p.HDTV.x264-CTU.mkv")
[('Game.of.Thrones', '01', '05')]
print p.findall("Entourage.S08E02.HDTV.XviD-LOL.avi")
[('Entourage', '08', '02')]

注意第一组 + 之后的 ?

解释:

第一场比赛吃得太多,所以降低它的贪婪度可以让接下来的比赛更快。 (顺便说一句,这不是一个很好的例子,我会更改名称,因为它们听起来确实有点太 Warezzz-y 了,说实话 ;-) )

关于python - 如何阻止 python 正则表达式过于贪婪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7231258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com