【发布时间】:2014-05-04 05:05:08
【问题描述】:
我不确定我是否完全理解以下正则表达式搜索的情况:
>>> import re
>>> template = re.compile("(\w+)+\.")
>>> target = "a" * 30
>>> template.search(target)
search() 调用需要几分钟才能完成,CPU 使用率达到 100%。该行为对于 2.7.5 和 3.3.3 Python 版本都是可重现的。
有趣的事实是,如果字符串的长度小于 20-25 个字符,search() 很快就会返回。
发生了什么?
【问题讨论】:
-
ReDoS的案例?
-
@paxdiablo 它实际上是一个合成的简化示例,我不小心复制了它。还没看明白,决定寻求帮助,谢谢。
-
弗里德尔在这里详细解释:foo.be/docs/tpj/issues/vol1_2/tpj0102-0006.html
-
这里有一个很棒的资源:@987654324@
标签: python regex string performance