我试图用关键词'car'搜索所有这些短语:
e.g。 text ='alice:speed car,我的红车,新车',我想找'速度车','我的红车','新车'。
import re
text = 'alice: speed car, my red car, new car'
regex = r'([a-zA-Z]+\s)+car'
match = re.findall(regex, text)
if match:
print(match)
但上面的代码会产生:
["speed ", "red ", "new "]
而不是
["speed car", "my red car", "new car"]
这是预期的吗?
答案 0 :(得分:4)
问题是你没有在正则表达式中捕获'car'
,将整个正则表达式置于()
内,并使用?:
作为内部正则表达式使其成为非捕获组
>>> regex = r'((?:[a-zA-Z]+\s)+car)'
>>> text = 'alice: speed car, my red car, new car'
>>> re.findall(regex, text)
['speed car', 'my red car', 'new car']