我有一个下面的正则表达式,
/\A(\d{5}[A-Z]{2}[a-zA-Z0-9]{3,7}-TMP|\d{5}[A-Z]{2}\d{3,7}(\-?\d{2})*)\z/
Run Code Online (Sandbox Code Playgroud)
我正在检查下面的字符串。我猜第一个和第三个应该返回匹配,第二个应该返回不匹配。但我没有在所有 3 项上都匹配。我的正则表达式是否错误?
99844RI1800001
99806CAAUSJ-TMP1
99844RI1800002
Run Code Online (Sandbox Code Playgroud)
Pythonre不支持\\z,它支持\\Z作为等效模式匹配字符串的最末尾。您的模式要求文字z字符位于模式的末尾。
请参阅Rexegg.com参考:
\n\n\n\n\n\xe2\x9c\xbd 在 Python 中,标记的作用与其他引擎中的作用
\n\\Z相同\\z:它仅匹配字符串的最末尾。
因此你可以使用
\n\n\\A(\\d{5}[A-Z]{2}[a-zA-Z0-9]{3,7}-TMP|\\d{5}[A-Z]{2}\\d{3,7}(-?\\d{2})*)\\Z\nRun Code Online (Sandbox Code Playgroud)\n\n请参阅正则表达式演示
\n\n请注意,从 Python 3.6 开始,您甚至会遇到异常:
\n\nre.error: bad escape \\z at position 68\nRun Code Online (Sandbox Code Playgroud)\n\n请参阅Pythonre文档:
\n\n版本 3.6 中进行了更改:由
\n\'\\\'和 ASCII 字母组成的未知转义现在是错误。
| 归档时间: |
|
| 查看次数: |
1410 次 |
| 最近记录: |