这是我试图完成的练习:
- 车牌号车牌由 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}