【发布时间】:2016-12-29 16:19:38
【问题描述】:
我有多个文件名,它们要么是电影名称,要么是电视节目中的一集。对于电影标题,我想匹配电影上映的年份,对于剧集,我想匹配格式为S00E00 的季节和剧集编号。但是,我不知道该字符串包含任何一个,或者有时它可以包含季节和剧集和年份。我也不知道字符串中首先出现的是什么,年份或季节和剧集。
我尝试了以下模式:(\d{4})|S(\d\d)E(\d\d),但是它只返回第一个匹配的匹配项。对于字符串2012.S01E02,它返回2012,对于字符串S01E02.2012,它返回S01E02。其余的捕获组是None(我使用的是 Python 3.5)。
我有一个解决方案,它使用两个单独的匹配项、if 语句并且通常看起来很难看。有没有一种方法可以让一个正则表达式模式返回一个包含(year, season, episode) 的列表(或元组)女巫,而不管字符串中的第一个是什么?
【问题讨论】:
-
如果您使用
re.findall,它应该会找到所有匹配项。所以2012.S01E02会给你[('2012', '', ''), ('', '01', '02')] -
这比我所拥有的要有用得多,谢谢。我可以更轻松地处理这个结果。
-
能否请您发布一些输入行和您想要的输出,就像典型的正则表达式问题一样?