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

在python中使用正则表达式查找540-600之间的数字,python,regex,python-2.7,Python,Regex,Python 2.7,我只是python的初学者,我正在使用正则表达式查找介于540-600之间的数字 并编写了以下脚本,但这不起作用: 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

我只是python的初学者,我正在使用正则表达式查找介于540-600之间的数字

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

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)
重新导入
导入系统
def valid_num(num):
打印数
p=re.match(r'^[5-6]\d\d',str(num))

返回bool(p)和all(map)(lambda n:540如果您真的想使用正则表达式,我建议您使用如下内容:

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


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

如果您真的想使用正则表达式,我建议您使用以下内容:

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


它将找到600,或5,后跟一个4到9的数字,再加上另一个数字。您可以编写一个正则表达式,只匹配540到600之间的数字,并使用以下部分:

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

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

\b(?:5[4-9]\d|600)\b
或者,如果字符串仅包含数字,则应使用开始和结束锚定:

^(?:5[4-9]\d|600)$
因此,这将导致:

import re

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

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

也就是说,使用正则表达式进行此类验证通常不是一个好主意。正则表达式通常更多用于语法验证,而对于语义验证,其他工具通常使用得更好。

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

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

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

\b(?:5[4-9]\d|600)\b
或者,如果字符串仅包含数字,则应使用开始和结束锚定:

^(?:5[4-9]\d|600)$
因此,这将导致:

import re

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

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

话虽如此,使用正则表达式进行此类验证通常不是一个好主意。正则表达式通常更多用于语法验证,而对于语义验证,其他工具通常使用得更好。

您正在做的事情可以用一种更简单的方式实现……为什么要使用正则表达式?
返回540您正在做的事情可以用一种更简单的方式实现唉…为什么要用regex?
返回540人这些年你在哪里,成为我的老师,每天教我python…然后我每天都会问你一个问题,这会让你和我的痴呆症远离你这些年来在哪里,成为我的老师,每天教我python…然后我会问你一个问题每天做一次运动,这将使你的两个痴呆症远离