首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python中的正则表达式查找540-600之间的数字。

使用python中的正则表达式查找540-600之间的数字。
EN

Stack Overflow用户
提问于 2017-06-10 11:48:02
回答 2查看 191关注 0票数 0

我只是python的初学者,我正在使用regex来查找540-600之间的一个数字。

并编写了以下脚本,但这不起作用:

代码语言:javascript
复制
import re
import sys

def valid_num(num):
    print num
    p = re.match (r'^[5-6]\d\d', str(num))
    return bool(p) and all(map(lambda n: 540<= int(n)<=600, p.groups()))

a = 699
print valid_num(a)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-10 11:53:20

您可以编写一个正则表达式,该正则表达式只匹配540到600之间的数字,如下部分所示:

代码语言:javascript
复制
5[4-9]\d|600

因此,正则表达式由两种可能性组成:5[4-9]\d6005[4-9]\d匹配540到599之间的任何数字,因为它以5开头,后面跟着介于4到9之间的数字和0到9之间的数字。600匹配600数字。

此外,您可能希望使用单词边界\b来确保与56900不匹配。所以:

代码语言:javascript
复制
\b(?:5[4-9]\d|600)\b

如果字符串只包含数字,则应使用开始和结束锚点:

代码语言:javascript
复制
^(?:5[4-9]\d|600)$

因此,这将导致:

代码语言:javascript
复制
import re

rgx540600 = re.compile(r'^(?:5[4-9]\d|600)$')

def valid_num(num):
    return bool(rgx540600.match(str(num)))

尽管如此,用正则表达式进行这样的核查通常不是一个好主意。Regex通常更多用于语法验证,而对于语义验证,其他工具通常更有用。

票数 2
EN

Stack Overflow用户

发布于 2017-06-10 11:52:49

如果您真的想使用regex,我建议您使用以下内容:

^600|[5][4-9]\d

它将找到600,或5,后面跟着一个从4到9的数字,再加上另一个数字。

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

https://stackoverflow.com/questions/44472975

复制
相关文章

相似问题

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