Python正则表达式停止在字符串上

时间:2016-08-26 14:18:31

标签: python regex

所以我想使用正则表达式搜索没有出现剧集编号的季节,我有以下列表:

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

上返回True

2 个答案:

答案 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))