Python正则表达式匹配多次出现的单词

标签 python regex

我想使用re.search(或者,更准确地说,pandas.str.contains)来匹配至少包含单词“car”的字符串两次(或者恰好两次,无论哪个更容易)。作为示例,考虑两个字符串

string1 = 'Car, Cat, House, Car'
string2 = 'Car, Cat, House'

我正在搜索的正则表达式应该匹配string1,但不匹配string2。我正在玩弄前瞻性(诸如 Car(?=Car) 之类的东西),但得到了完全奇怪的行为(毫不奇怪,我从未掌握过正则表达式......)。

最佳答案

您要查找的模式是 Car.*?Car,即两次出现 Car,中间由任何内容(或根本没有)分隔。这将匹配至少包含两次 Car 的任何字符串:

re.search(r"Car.*?Car", string1)

非贪婪的星号*?将确保一旦发现两次出现,re.search就会停止。

如果string1包含行终止符,还要添加re.MULTILINE标志。

关于Python正则表达式匹配多次出现的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30428447/

相关文章:

python - SQLAlchemy (ORM) 与原始 SQL 查询

ruby - 编写正则表达式作为 gsub 的参数!方法——难倒?

python - HTML 标签中内容的正则表达式模式

python - 合并具有不同和未知字段的数据帧

python - 将元素插入 numpy 数组的更好方法

python - 如何在 TensorFlow 中计算张量的加权和?

regex - 如何使用正则表达式捕获和替换包含单独模式的行上的所有模式

python - 将值传递给另一个 View django

python - 根据列表提取数据

regex - Linux grep/awk : Filter lines in a file, 但在 EOF 处克隆(保留或省略)尾随换行符