Python正则表达式搜索

Python正则表达式搜索,python,regex,search,findall,Python,Regex,Search,Findall,我试图搜索所有那些关键字为“车”的短语: e、 g.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

我试图搜索所有那些关键字为“车”的短语:

e、 g.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']

问题是您没有在正则表达式中捕获“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']