我正在尝试编写一个函数,将值与正则表达式进行比较以查看是否匹配。问题是我有很多正则表达式只有一个区别{}
,例如^[a-z]{0,500}$
。 ^[a-z]{0,200}$
& def check(value, min=None, max=None):
regex = "^[a-z]"+"{"+min+","+max+"}$"
r= re.compile(regex)
if r.match(value):
return True
else:
return False
是类似的正则表达式,只有范围/重复的差异。我试图解决如何使用一个函数处理这些正则表达式的问题。到目前为止,我已经写了这个功能。但我认为必须有一些选择比我在下面所做的要好得多。如果没有指定max或min,它也应该能够处理。
{{1}}
答案 0 :(得分:4)
使用min="0"
和max=""
代替(这样,如果未指定,它们将构建有效范围)。
此外,请勿执行if condition: return True
等 - 只需返回匹配对象 - 如果匹配,它将评估为True
(如果您愿意,可以稍后对其进行处理) )。
此外,如果您只使用一次,则无需编译正则表达式。
def check(value, min="0", max=""):
regex = "[a-z]{" + min + "," + max + "}$"
return re.match(regex, value)
此外,我已移除^
,因为它隐含在re.match()
中。