[英]Regex taking too long in python
我用regex101来测试我的正则表达式并且工作正常。我想要的是检测这些模式
但它只是随机它不应该匹配,如果字符串是这样的
我的正则表达是这样的。
m = re.match(r"^(((section)\s*|(\d+\.)|\d+|(\d+\.\d+)|[a-zA-z\s]|[a-zA-z\.\s])+((\d+\.$)|\d+$|(\d+\.\d+$)))","random random random random random",flags = re.I)
如果我给一个很长的字符串它会卡住。任何想法?
经过一些简化后,这个正则表达式符合上述要求,并在下面的测试用例中重现。
import re
regex = r'(?:section)*\s*(?:[0-9.])*\s*random\s+(?!random)(?:[0-9.])*'
strings = [
"random random random random random",
"section 1.2 random 2",
"1.2 random 2",
"1.2. random 2",
"random 2",
"random 2.",
"random",
]
for string in strings:
m = re.match(regex, string, flags = re.I)
if m:
print "match on", string
else:
print "non match on", string
它给出了一个输出:
non match on random random random random random
match on section 1.2 random 2
match on 1.2 random 2
match on 1.2. random 2
match on random 2
match on random 2.
non match on random
请参阅以下网址 : https : //eval.in/661183
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.