首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python re.search查找数字范围

使用Python re.search查找数字范围
EN

Stack Overflow用户
提问于 2012-07-17 07:31:36
回答 2查看 2.3K关注 0票数 0

我正在尝试查找字符串中的一系列数字。下面列出了不同的范围。如何搜索特定范围的号码?

确保第一个数字介于1,17之间,第二个数字介于1,37之间,依此类推。

代码语言:javascript
复制
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")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-17 07:43:31

如果你能得到一个只包含数字的字符串,下面是你检查它是否符合你的要求的方法:

代码语言:javascript
复制
>>> 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

下面是一个失败的例子:

代码语言:javascript
复制
>>> 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

如果您需要从包含其他文本/字符的较大字符串中提取数字序列,则正则表达式是正确的工具。

票数 0
EN

Stack Overflow用户

发布于 2012-07-17 07:49:14

正则表达式是关于匹配字符的。它不能理解数字、日期或其他任何东西。

虽然有时可以构建正则表达式来匹配某个范围内的数字,但它可能会变得非常冗长和混乱。

最好的解决方案是尝试找到与您要查找的内容相似的可能匹配项,然后使用其他方法检查每个匹配项是否真的就是您要查找的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11514086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档