我需要找到格式为“数字-数字”的数字范围。该数字应在 0-3000 范围内。所以我想出了这个正则表达式
match = re.search(r'^[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]-[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]',sentence)
当我运行程序时,我只想提取句子中的 56-900,但程序提取了其他数字,如 2016、CLP2012 等。我只想提取它们之间有“-”的数字。我的模式有什么问题。
请您参考如下方法:
使用python包regex_engine用于生成数值范围的正则表达式
你可以使用pip安装这个包
pip install regex-engine
from regex_engine import generator
generate = generator()
regex = generate.numerical_range(0,3000)
print(regex)
^([0-9]|[2-8][0-9]|1[0-9]|9[0-9]|[2-8][0-9][0-9]|1[1-9][0-9]|10[0-9]|9[0-8][0-9]|99[0-9]|[2-2][0-9][0-9][0-9]|1[1-9][0-9][0-9]|10[1-9][0-9]|100[0-9]|300[0-0])$
您还可以为 float 和负数范围生成正则表达式
from regex_engine import generator
generate = generator()
regex1 = generate.numerical_range(5,89)
regex2 = generate.numerical_range(81.78,250.23)
regex3 = generate.numerical_range(-65,12)