Python正则表达式搜索

标签 python regex search findall

我试图搜索所有带有关键字“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/

相关文章:

Python正则表达式查找不完整的左括号和右括号

python - 通过修改 python3 中的特定正则表达式来捕获重音字符

ios - 如何将两个 Range<Index> 相加?

php - 权衡搜索结果

python - 使用 VLC 捕获视频,并将帧保存为 jpeg,怎么样?

python - 使用 pandas DataFrame 写入数据时出现无属性 "append"错误

python - 如何在 python 中使用多个索引同时填充 numpy 数组

python - 为什么我可以在 Python 的抽象类中访问派生类的变量?

c# - 将 JavaScript 正则表达式转换为 C#

windows - Windows 7文件夹资源管理器搜索非常慢