Python正则表达式非常慢

Python正则表达式非常慢,python,regex,pandas,dataframe,regex-lookarounds,Python,Regex,Pandas,Dataframe,Regex Lookarounds,我有一个pandas数据框,其中有几列文字和大约20000行文字。我需要对我选择的正则表达式执行一些字符串操作。使用或类似的运算符时 pattern = "string1|string2|string3" 这一切都很好,脚本大约需要几秒钟,这是可以的 但是如果我使用AND(lookarounds)表达式 pattern = "(?=.*string1)(?=.*string2)(?=.*string3)" 它非常慢。我的意思是,显然它需要越来越频繁地计算,但它需要几分钟才能完成,即使我只使用

我有一个pandas数据框,其中有几列文字和大约20000行文字。我需要对我选择的正则表达式执行一些字符串操作。使用或类似的运算符时

pattern = "string1|string2|string3"
这一切都很好,脚本大约需要几秒钟,这是可以的

但是如果我使用AND(lookarounds)表达式

pattern = "(?=.*string1)(?=.*string2)(?=.*string3)"
它非常慢。我的意思是,显然它需要越来越频繁地计算,但它需要几分钟才能完成,即使我只使用了两个字符串

有什么方法可以使一个更高效的正则表达式算法在一行中发生,而不是像链子一样被链锁起来

contains(string1, flags=re.I, regex=True) & contains(string2, flags=re.I, regex=True)

感谢可能的帮助

如果我们散布一些锚,速度会快一点,但不要期望超过10%

"^(?=^.*string1)(?=^.*string2)(?=^.*string3)"

为什么不把它放进数据库呢?如果您有那么多行:数据库可能是最好的选择。您所说的数据库是什么意思?我使用的是pandas数据框架,我的意思是使用数据库作为示例sqlite db,然后调用Regex来搜索string1、string2和string3的顺序是否未指定?