Python 重复“;{};为regex飞行

Python 重复“;{};为regex飞行,python,regex,Python,Regex,我正在尝试编写一个函数,将值与正则表达式进行比较,以查看是否匹配。问题是,我有相当多的正则表达式是相似的,只有一个差异,范围{}例如^[a-z]{0500}$&^[a-z]{0200}$是相似的正则表达式,只有范围/重复的差异。我试图用一个函数来解决如何处理这些正则表达式的问题。到目前为止,我已经编写了这个函数。但我认为一定有比我下面所做的更好的选择。如果没有指定最大值或最小值,它也应该能够处理 def check(value, min=None, max=None): regex =

我正在尝试编写一个函数,将值与正则表达式进行比较,以查看是否匹配。问题是,我有相当多的正则表达式是相似的,只有一个差异,范围
{}
例如
^[a-z]{0500}$
&
^[a-z]{0200}$
是相似的正则表达式,只有范围/重复的差异。我试图用一个函数来解决如何处理这些正则表达式的问题。到目前为止,我已经编写了这个函数。但我认为一定有比我下面所做的更好的选择。如果没有指定最大值或最小值,它也应该能够处理

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
改为使用
min=“0”
max=”“
(这样,如果未指定,它们将构造有效范围)

另外,如果条件为:return True等,则不要执行
操作-只需返回match对象-如果存在匹配,它将计算为
True
(如果愿意,您可以稍后使用它)

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

def check(value, min="0", max=""):
    regex = "[a-z]{" + min + "," + max + "}$"
    return re.match(regex, value)
另外,我删除了
^
,因为它隐式存在于
re.match()
中,使用
min=“0”
max=”“
(这样,如果未指定,它们将构造有效范围)

另外,如果条件为:return True
等,则不要执行
操作-只需返回match对象-如果存在匹配,它将计算为
True
(如果愿意,您可以稍后使用它)

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

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

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

中,那么为什么不直接使用
^[a-z]{0500}$
?用字符串构建RegExp总是感觉像用字符串连接构建SQL,这听起来非常可怕,但在您的特定情况下,这似乎是可以接受的(您不想/需要先使用
str()
将最小值和最大值转换为字符串吗?)还有,为什么
value
是一个可选参数?@BenjaminGruenbaum:这个值只是一个错误。我现在已经更正了。最小值和最大值已经作为字符串传递了。但是很好的一点是,它们应该在函数中铸造。@HamZaDzCyberDeV:因为它取决于特定类型,有些需要200最大值,有些需要500最大值@TimPietzcker:这是另一个错误。我想将值从可选更改为必需,但意外地删除了所有。我不知道我在想什么:(那么为什么不直接使用
^[a-z]{0500}$
?使用字符串构建RegExp总是感觉像使用字符串连接构建SQL,这听起来非常可怕,但是在您的特定情况下,这似乎是可以接受的(您不想/需要先使用
str()
将最小值和最大值转换为字符串吗?)还有,为什么
value
是一个可选参数?@BenjaminGruenbaum:这个值只是一个错误。我现在已经更正了。最小值和最大值已经作为字符串传递了。但是很好的一点是,它们应该在函数中铸造。@HamZaDzCyberDeV:因为它取决于特定类型,有些需要200最大值,有些需要500最大值@TimPietzcker:这是另一个错误。我想将值从可选更改为必需,但意外地删除了所有。我不知道我在想什么:(谢谢你指出关于^的问题。因此,没有办法让事情变得更整洁。我想,
re
可能有一些选择来处理这种情况。无论如何,谢谢你的帮助。@BenjaminGruenbaum:谢谢你提醒。我想我今天过得不好,忘记了很多事情。谢谢你指出关于^的问题。所以没有办法使自己更整洁。我想也许
re
可以选择处理这种情况。无论如何,谢谢你的帮助。@BenjaminGruenbaum:谢谢你提醒我。我想我今天过得不好,忘记了很多事情。