繁体   English   中英

以有效的方式组合正则表达式 python

[英]Combine in an efficient way regex python

设置

我动态创建一个正则表达式列表,即regex_list 列表中的每个正则表达式都肯定至少与应用的文本匹配。 列表中的某些正则表达式可能是相等的。

regex_list = []
for f in foo: # foo is a list of strings e.g. foo = ['foo1', 'foo2', 'foo1', ...]
    # f is a valid expression to be used inside the regex
    regex_list.append(f'[^.]*?{f}[^.]*\.')

regex = re.compile('|'.join(regex_list), flags=re.DOTALL)
result = re.findall(regex, text)

问题

自从

  1. regex_list中的某些正则表达式可能等于
  2. regex_list中的正则表达式与 OR 运算符组合在一起

对于列表中存在另一个副本的正则表达式,仅捕获文本中的第一个匹配项。

问题

一种解决方法可能是使用 for 循环单独应用每个正则表达式,但它非常慢。

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

偶然发现使用re 模块在 for 循环中单独应用每个 regex 非常慢,而使用regex 模块却出奇的快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM