根据字符串检查正则表达式

时间:2018-11-13 14:23:24

标签: python regex

我有一个下面的正则表达式,

/\A(\d{5}[A-Z]{2}[a-zA-Z0-9]{3,7}-TMP|\d{5}[A-Z]{2}\d{3,7}(\-?\d{2})*)\z/

我正在检查以下字符串。第一个和第三个应该返回我猜到的匹配,第二个不匹配。但是我没有在所有3个上都匹配。我的正则表达式错了吗?

99844RI1800001
99806CAAUSJ-TMP1
99844RI1800002

1 个答案:

答案 0 :(得分:2)

Python re不支持\z,它支持\Z作为与字符串末尾匹配的等效模式。您的模式要求在模式末尾有文字z char。

请参见Rexegg.com参考:

  

✽在Python中,标记\Z的作用与\z在其他引擎中的作用相同:它仅在字符串的末尾匹配。

因此您可以使用

\A(\d{5}[A-Z]{2}[a-zA-Z0-9]{3,7}-TMP|\d{5}[A-Z]{2}\d{3,7}(-?\d{2})*)\Z

请参见regex demo

请注意,从Python 3.6开始,您甚至会得到一个例外:

re.error: bad escape \z at position 68

请参见Python re docs

  

版本3.6中的更改:由'\'和ASCII字母组成的未知转义符现在是错误。