小编Map*_*pio的帖子

比较非匹配正则表达式的速度

以下Python代码非常慢:

import re
re.match( '([a]+)+c', 'a' * 30 + 'b' )
Run Code Online (Sandbox Code Playgroud)

如果用更大的常数替换30,情况会变得更糟.

我怀疑由于连续性导致的解析歧义+是罪魁祸首,但我在regexp解析和匹配方面不是很专业.这是Python regexp引擎的错误,还是任何合理的实现都会这样做?

我不是Perl专家,但以下回复非常快

perl -e '$s="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"; print "ok\n" if $s =~ m/([a]+)+c/;'
Run Code Online (Sandbox Code Playgroud)

并且增加'a'的数量并不会显着改变执行速度.

python regex perl

9
推荐指数
2
解决办法
586
查看次数

标签 统计

perl ×1

python ×1

regex ×1