重复“{}”飞行正则表达式

时间:2013-05-06 08:46:49

标签: python regex

我正在尝试编写一个函数,将值与正则表达式进行比较以查看是否匹配。问题是我有很多正则表达式只有一个区别{},例如^[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}}

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()中。