我试图搜索所有带有关键字“car”的短语:
例如text = 'alice: speed car, my red car, new car', 我想查找 'speed car', 'my red car', 'new 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"]
什么是预期的?
最佳答案
问题是您没有在正则表达式中捕获 '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']
关于Python正则表达式搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18225278/