以高效的方式组合regex-python 安装程序

以高效的方式组合regex-python 安装程序,python,regex,optimization,re,findall,Python,Regex,Optimization,Re,Findall,我动态创建一个regex列表,即regex\u list。 列表中的每个正则表达式都确保应用到的文本上至少有一个匹配项。 列表中的某些正则表达式可能是相等的 regex_list=[] 对于foo中的f:#foo是字符串列表,例如foo=['foo1','foo2','foo1',…] #f是要在正则表达式中使用的有效表达式 regex_list.append(f'[^.]*?{f}[^.]*.) regex=re.compile('|'.join(regex_列表),flags=re.DOTA

我动态创建一个regex列表,即
regex\u list
。 列表中的每个正则表达式都确保应用到的文本上至少有一个匹配项。 列表中的某些正则表达式可能是相等的

regex_list=[]
对于foo中的f:#foo是字符串列表,例如foo=['foo1','foo2','foo1',…]
#f是要在正则表达式中使用的有效表达式
regex_list.append(f'[^.]*?{f}[^.]*.)
regex=re.compile('|'.join(regex_列表),flags=re.DOTALL)
结果=re.findall(正则表达式,文本)
问题 自

  • regex\u列表中的某些正则表达式可能等于
  • regex\u列表中的regex与OR运算符组合在一起
  • 对于列表中存在另一个副本的正则表达式,只捕获文本中的第一个匹配项

    问题: 一种解决方法是使用for循环分别应用每个正则表达式,但速度非常慢


    有没有一种很好的方法来组合正则表达式并使它们尽可能匹配?

    偶然发现,在for循环中单独应用每个正则表达式使用非常慢,而使用则出人意料地快。

    您在
    foo
    中得到了什么?举几个例子就可以了。然而,您似乎只有独立的regexp需要在文本上逐个执行。
    foo
    是字符串列表。e、 g.
    foo=['foo1'、'foo2'、'foo1'、…]
    类似于
    ['John'、'John Doe'、'John Doe Junior']
    ?是的,我添加了一个示例好的,您可以使用。也许,有了它,你可以更近一点。但是,
    [^.]*?{f}[^.]*\.
    模式意味着
    [^.]
    可能会吃掉任何其他潜在的匹配项。恐怕您需要对匹配进行后期处理。