所以我想使用正则表达式搜索没有出现剧集编号的季节,我有以下列表:
string = ['Fear the walking dead Season 2 Episode 9',
'Veep Season 5',
'Martine Season 2 (unknown number of episodes)',
'New Girl Season 5 Episode 16']
我已经编写了这段代码re.search('.+? Season [0-9]{1,2}', string, re.I)
,但它似乎也考虑了带有剧集编号的系列。
我希望它仅在Veep Season 5
答案 0 :(得分:3)
我建议使用^
和$
来匹配从一行的开头到结尾。因此,您可以将正则表达式更改为:
re.search('^(.+?Season\s[0-9]{1,2})$', string, re.I | re.M)
答案 1 :(得分:2)
根据以前的经验,我建议不要仅使用正则表达式进行此操作,但我很快将以下片段拼凑在一起(之后no_episode_string将包含所有没有剧集的片段)。
对于每个赛季,我们都会与#34;。?[0-9] (。*)"进行比赛,这只会抓住所有内容,包括我们第一次遇到number,然后取其余的字符串,如果没有剧集编号则为空(如果没有剧集编号),或者如果有剧集编号则为非空。
所以我们只检查它是否为空,如果是,那么我们将整个事物添加到no_episode_string。
import re
string = ['Fear the walking dead Season 2 Episode 9',
'Veep Season 5',
'Martine Season 2 (unknown number of episodes)',
'New Girl Seasoon 5 Episode 16']
no_episode_string = []
for season in string:
m = re.search('.*?[0-9]+(.*)', season)
if m.group(1) == "":
no_episode_string.append(m.group(0))