我在Python的正则表达式中遇到了一个名为捕获组的100个命名捕获组限制。
硬编码限制在sre_compile.py中:
if p.pattern.groups > 100:
raise AssertionError(
"sorry, but this version only supports 100 named groups"
)
我的理解是,这种限制是出于性能原因而不一定是因为空间限制。就我而言,性能问题不如此功能重要。所以我想知道是否有合理的方法来解决这个限制?可能通过注入替换sre_compile.py文件并删除了大小检查?当然,这听起来很危险,我理解不推荐这样的行动。但是,在短期内我需要规避这个限制,从长远来看,我有一个很好的工作。有关最佳解决方案的任何建议吗?
提前谢谢!
答案 0 :(得分:1)
无需弄乱python的库,只需替换代码中的函数即可:
import sre_compile
def my_compile(p, flags=0):
...
sre_compile.compile = my_compile
答案 1 :(得分:0)
尝试在https://pypi.python.org/pypi/pycparser/2.14下载pycparse-2.14.tar.gz 并运行以下命令
tar zxf pycparser-2.14.tar.gz
cd pycparser-2.14
python setup.py install