有没有办法突破Python中正则表达式100组的限制?另外,有人能解释一下为什么会有限制吗?
发布于 2009-01-26 21:58:27
我不确定你到底在做什么,但试着使用一个单独的组,里面有很多OR子句...所以(这个)|(那个)变成了(这个|那个)。您可以通过传递一个函数来对结果做一些聪明的事情,该函数对匹配的特定单词执行某些操作:
newContents, num = cregex.subn(lambda m: replacements[m.string[m.start():m.end()]], contents)
如果你真的需要这么多组,你可能不得不分阶段去做……一次通过十几个大的组,然后在这些组中的每个组中进行另一次传递,以获得您想要的所有细节。
发布于 2009-01-25 22:54:05
这是有限制的,因为它将占用太多的内存来有效地存储完整的状态机。我要说的是,如果你的re中有超过100个组,那么无论是re本身还是你使用它们的方式都有问题。也许您需要拆分输入,并在较小的块或其他工作。
发布于 2013-01-18 10:37:06
我发现最简单的方法就是
import regex as re
而不是
import re
我相信正则表达式的默认_MAXCACHE是500而不是100。这是我发现regex是比re更好的模块的众多原因之一。
https://stackoverflow.com/questions/478458
复制相似问题