我正在尝试查找字符串中的一系列数字。下面列出了不同的范围。如何搜索特定范围的号码?
确保第一个数字介于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")发布于 2012-07-17 07:43:31
如果你能得到一个只包含数字的字符串,下面是你检查它是否符合你的要求的方法:
>>> 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如果您需要从包含其他文本/字符的较大字符串中提取数字序列,则正则表达式是正确的工具。
发布于 2012-07-17 07:49:14
正则表达式是关于匹配字符的。它不能理解数字、日期或其他任何东西。
虽然有时可以构建正则表达式来匹配某个范围内的数字,但它可能会变得非常冗长和混乱。
最好的解决方案是尝试找到与您要查找的内容相似的可能匹配项,然后使用其他方法检查每个匹配项是否真的就是您要查找的内容。
https://stackoverflow.com/questions/11514086
复制相似问题