gpt4 book ai didi

python - 正则表达式在 python 中花费的时间太长

转载 作者:行者123 更新时间:2023-11-28 17:24:01 25 4
gpt4 key购买 nike

我已经使用 regex101 来测试我的正则表达式并且它工作正常。我正在尝试的是检测这些模式

  1. 1.2节随机2
  2. 1.2 随机 2
  3. 1.2。随机 2
  4. 随机2
  5. 随机 2.

但它只是随机的,如果字符串是那样的话,它不应该匹配

  1. 随机

我的正则表达式是这样的。

  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

关于python - 正则表达式在 python 中花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com