问题描述
我有一个下面的正则表达式,
I have a below regex expression,
/\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 个上都匹配.我的正则表达式有错吗?
I am checking against below strings. The first and third should return a match I guess and second a no match. But I am not getting a match on all 3. Is my regex wrong?
99844RI1800001
99806CAAUSJ-TMP1
99844RI1800002
推荐答案
Python re
不支持 \z
,支持 \Z
作为匹配字符串末尾的等效模式.您的模式需要文字 z
字符出现在模式的末尾.
Python re
does not support \z
, it supports \Z
as equivalent pattern matching the very end of the string. Your pattern requires the literal z
char to be there at the end of the pattern.
参见 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
查看正则表达式演示
请注意,从 Python 3.6 开始,您甚至会遇到异常:
Note that starting with Python 3.6 you would even get an exception:
re.error: bad escape \z at position 68
请参阅 Python re
文档一个>:
See Python re
docs:
在 3.6 版更改:由 '\'
和 ASCII 字母组成的未知转义现在是错误.
这篇关于“\z"锚在 Python 正则表达式中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!