我想寫一個函數,它將值與正則表達式進行比較以查看是否匹配。問題是我有很多類似的正則表達式,只有一個區別是{}
, ^[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
那你爲什麼不直接用'^ [a-z] {0,500} $'? – HamZa 2013-05-06 08:48:43
使用字符串構建RegExp總是感覺像使用字符串連接構建SQL聽起來很可怕,但是在您的特定情況下,這似乎是可以接受的(您不需要/需要首先使用str()將最小和最大值轉換爲字符串儘管?)另外,爲什麼'value'是一個可選參數? – 2013-05-06 08:48:46
@BenjaminGruenbaum:那個價值的東西只是一個錯誤。我現在糾正了它。 min和max已經作爲字符串傳遞。但很好的一點是,他們應該在功能中鑄造在這裏。 – hjelpmig 2013-05-06 08:53:47