有没有办法超过Python中正则表达式的100组限制?此外,有人可以解释为什么有一个限制.
存在一个限制因为它需要太多内存才能有效地存储完整的状态机.我要说的是,如果你的组中有超过100个组,那么在re本身或你使用它们的方式上都有问题.也许你需要拆分输入并处理较小的块或其他东西.
我找到了最简单的方法
import regex as re
代替
import re
正则表达式的默认_MAXCACHE是500而不是100我相信.这是我发现正则表达式比re更好的模块的众多原因之一.
如果我没有弄错的话,"新" 正则表达式模块(目前是第三方,但最终会替换stdlib中的re模块)没有这个限制,所以你可以尝试一下.
我怀疑你真的需要通过下一个命令处理100个命名组或在regexp
替换命令中使用它.这将是非常不切实际的.如果您只需要群组来表达丰富的条件,regexp
您可以使用非分组.
(?:word1|word2)(?:word3|word4)
包括嵌套组在内的复杂场景也是可能的.非分组组没有限制.
我不确定您到底在做什么,但是尝试使用一个组,其中包含许多OR子句...,这样(this)|(that)变成(this | that)。您可以通过传递对匹配的特定单词执行某些操作的函数来对结果进行巧妙的处理:
newContents, num = cregex.subn(lambda m: replacements[m.string[m.start():m.end()]], contents)
如果您真的需要这么多的小组,则可能必须分阶段进行……一次通过一大批小组,然后在每个小组内通过另一次小组讨论所需的所有细节。