我想在字符串中找到一系列数字。下面列出了不同的范围。如何搜索特定的数字范围?
确保第一个数字介于[1,17]之间,第二个数字介于[1,37]等之间
import re
Test1 = "This is a test 5-9-81-15"
A1 = range(1, 17)
A2 = range(1, 37)
A3 = range(76, 89)
A4 = range(13, 27)
x = re.search("{0}-{1}-{2}-{3}".format(A1, A2, A3, A4), Test1)
if x:
print ("Match")
else:
print ("No Match")
答案 0 :(得分:0)
如果您只能获得一串数字,请按以下方式查看它是否符合您的要求:
>>> s = "5-9-81-15" # String to parse
>>> lb = [1, 1, 76, 13] # List of lower bounds
>>> ub = [17, 37, 89, 27] # List of upper bounds
>>> vals = [int(x) for x in s.split('-')] # vals contains [5, 9, 81, 15]
>>> all(x > L and x < U for x, L, U in zip(vals, lb, ub)) # does the check
True
失败的例子:
>>> s = "5-9-90-15" # fails with the third number
>>> vals = [int(x) for x in s.split('-')]
>>> all(x > L and x < U for x, L, U in zip(vals, lb, ub))
False
正则表达式是正确的工具,如果您需要从包含其他文本/字符的较大字符串中提取数字序列。
答案 1 :(得分:0)
正则表达式是关于匹配字符的。它不了解数字,日期或其他任何内容。
虽然有时候可以建立一个正则表达式来匹配一个范围内的数字,但它可能会变得非常冗长和混乱。
最好的解决方案是尝试找到类似您正在寻找的匹配项,然后使用其他方法来检查每个是否你是什么寻找。