小编jul*_*len的帖子

正则表达式的100%CPU使用率取决于输入长度

我试图在Python中提出一个regexp,它必须匹配任何字符,但避免使用三个或更多连续的逗号或分号.换句话说,只允许最多两个连续的逗号或分号.

所以这就是我现在所拥有的:

^(,|;){,2}([^,;]+(,|;){,2})*$
Run Code Online (Sandbox Code Playgroud)

它似乎按预期工作:

>>> r.match('')
<_sre.SRE_Match object at 0x7f23af8407e8>
>>> r.match('foo,')
<_sre.SRE_Match object at 0x7f23af840750>
>>> r.match('foo, a')
<_sre.SRE_Match object at 0x7f23af8407e8>
>>> r.match('foo, ,')
<_sre.SRE_Match object at 0x7f23af840750>
>>> r.match('foo, ,,a')
<_sre.SRE_Match object at 0x7f23af8407e8>
>>> r.match('foo, ,,,')
>>> r.match('foo, ,,,;')
>>> r.match('foo, ,, ;;')
<_sre.SRE_Match object at 0x7f23af840750>
Run Code Online (Sandbox Code Playgroud)

但是当我开始增加输入文本的长度时,正则表达式似乎需要更多时间来给出响应.

>>> r.match('foo, bar, baz,, foo')
<_sre.SRE_Match object at 0x7f23af8407e8>
>>> r.match('foo, bar, baz,, fooooo, baaaaar')
<_sre.SRE_Match object at 0x7f23af840750>
>>> r.match('foo, bar, baz,, fooooo, baaaaar,')
<_sre.SRE_Match object at …
Run Code Online (Sandbox Code Playgroud)

python regex cpu-usage

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

标签 统计

cpu-usage ×1

python ×1

regex ×1