2

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

1 回答 1

4

使用min="0"andmax=""代替(这样,如果未指定,它们将构建有效范围)。

另外,不要这样做if condition: return True- 只需返回匹配对象 - 它会评估True是否有匹配项(如果你愿意,你可以稍后用它做一些事情)。

此外,如果您只使用一次,则无需编译正则表达式。

def check(value, min="0", max=""):
    regex = "[a-z]{" + min + "," + max + "}$"
    return re.match(regex, value)

另外,我已经删除了,^因为它隐含在re.match().

于 2013-05-06T08:52:58.927 回答