Python正则表达式搜索

时间:2013-08-14 07:06:14

标签: python regex search findall

我试图用关键词'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"]

这是预期的吗?

1 个答案:

答案 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']