我只是python的初学者,我正在使用regex来查找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)发布于 2017-06-10 11:53:20
您可以编写一个正则表达式,该正则表达式只匹配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)))尽管如此,用正则表达式进行这样的核查通常不是一个好主意。Regex通常更多用于语法验证,而对于语义验证,其他工具通常更有用。
发布于 2017-06-10 11:52:49
如果您真的想使用regex,我建议您使用以下内容:
^600|[5][4-9]\d
它将找到600,或5,后面跟着一个从4到9的数字,再加上另一个数字。
https://stackoverflow.com/questions/44472975
复制相似问题