我正在尝试找到一个组合,但它无法正常工作
>>> whole = ('\n1. WIPO is located at\n(A) New York\n(B) London\n(C) Geneva\n(D) Paris\n')
>>> match = re.findall('1\.\s(\w+\s)+\w+\n', whole)
>>> print(match)
['located']
我希望它返回"1. WIPO is located at\n"
。但它只是返回['located ']
答案 0 :(得分:1)
使用(?:...)
代替(...)
,使非捕获组:
re.findall('1\.\s(?:\w+\s)+\w+\n', whole)
如果存在捕获组,re.findall()
会更改行为并仅返回匹配的组;如果没有捕获的组,则会返回整个匹配项:
>>> import re
>>> whole = '\n1. WIPO is located at\n(A) New York\n(B) London\n(C) Geneva\n(D) Paris\n'
>>> re.findall('1\.\s(?:\w+\s)+\w+\n', whole)
['1. WIPO is located at\n']
如果您只希望有一个匹配,那么请不要使用re.findall()
,而是使用re.search()
代替,并在生成的.group()
实例上调用Match
:
>>> re.search('1\.\s(?:\w+\s)+\w+\n', whole).group()
'1. WIPO is located at\n'
此处,群组是否正在捕捉不再重要。
答案 1 :(得分:0)
查看Match Object。
print match.groups()