使用 Python 的正则表达式检测 2 个连续大写字母时出现问题



这是我试图完成的练习:

  1. 车牌号车牌由 2 个大写字母、破折号 ('-'(、3 位数字、破折号 ('-'( 和最后 2 个大写字母组成。编写脚本以检查输入字符串是否为车牌(input (( 方法(。如果正确,请打印"好"。如果不正确,请打印"不好"。

这是我的代码:

import re
plate = input("Enter your License plate number:")
patern = '[A-Z]{2}[-]d{3}[-][A-Z]{2}'
if re.match(patern, plate):
    print("good")
else:
    print("NOT good")

这是我的输出:

Enter your License plate number:AA-999-AA
NOT good

所以我尝试使用 w 而不是 [A-Z] 它使用小写字母,但使用 [A-Z] 它无法检测到大写字母......

我已经在谷歌和堆栈溢出上搜索过,没有找到任何解决方案,你能帮我吗?

多谢!

模式中有一个无关的反斜杠。 只需将其删除:

pattern = r"[A-Z]{2}-d{3}-[A-Z]{2}"

例:

>>> import re
>>> re.match(r"[A-Z]{2}-d{3}-[A-Z]{2}", "AA-999-AA")
<re.Match object; span=(0, 9), match='AA-999-AA'>

此外,无需将文字-括在字符集[]中。

正则表达式中有一个过时的转义字符:

[A-Z]{2} - 不需要,因为[A-Z]是一个角色类,你不想逃避[并将其视为角色。

如果删除它,您将拥有:

[A-Z]{2}[-]d{3}[-][A-Z]{2}

注意 您还可以删除-周围的[]

[A-Z]{2}-d{3}-[A-Z]{2}

最新更新