我想抓住三个单词之一后显示的数字,如下例所示:
x1 = Break, Staffel 1, Part 2 # 1
x2 = Seinfeld, Season 11 # 11
x3 = Friends, Saison 4 # 4
这是我到目前为止所做的:
re.split(', ((Staffel)|(Season)|(Saison)) ', x)[-1]
虽然它仅在数字位于字符串末尾时才有效。什么是更好的方式来做到这一点?
答案 0 :(得分:4)
使用re.search()
,而不是re.split()
。然后,您可以使用捕获组来获取单词后面的数字。
m = re.search(r', (?:Staffel|Season|Saison) (\d+)', x);
if (m):
digits = m.group(1)
我在第一组中使用?:
,因为您不需要捕获单词,分组仅用于替换。
\d
匹配一个数字,+
匹配前面RE中的至少一个,因此匹配任何长度数。
答案 1 :(得分:1)
您可以尝试re.findall
>>> re.findall("(?:Staffel|Season|Saison)\s(\d+)",x1)
['1']
如果你想捕捉单词:
>>> re.findall("(Staffel|Season|Saison)\s(\d+)",x1)
[('Staffel', '1')]