我想使用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/