转义单词导致与模式不匹配

时间:2018-03-05 00:32:09

标签: python regex

我有以下正则表达式来匹配必须包含至少4位数的字符串,并且它可能只包含大写字母和特殊字符“。”和“ - ”:

pattern = '^[A-Z.-]*(\d[A-Z.-]*){4,}$'

问题是我在尝试使用上面的模式匹配文档中的单词时出现以下错误:

error: missing ), unterminated subpattern at position 0

我的猜测是它与逃避有关。但逃避似乎抛弃了匹配。因此,例如在以下情况下,我得到一个匹配:

pattern = '^[A-Z.-]*(\d[A-Z.-]*){4,}$'
word = "ABCD-EFG-14-27"
if(re.match(pattern, word)):
    print(word + " Match found!")

但是,如果我逃避这个词,我就不再匹配了:

pattern = '^[A-Z.-]*(\d[A-Z.-]*){4,}$'
word = re.escape("ABCD-EFG-14-27")
if(re.match(pattern, word)):
    print(word + " Match found!")

假设逃避是错误,我该怎么做才能逃脱这个词后得到一个匹配?

更新: 根据下面的答案,我也尝试了以下但没有运气:

pattern = r'^[A-Z.-]*(?:\d[A-Z.-]*){4,}$'
word = re.escape("ABCD-EFG-14-27")
if(re.match(pattern, word)):
   print(word + " Match found!")

0 个答案:

没有答案