这是我要完成的练习:
这是我的代码:
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]
时,它不能检测到大写字母...
我在Google上搜索并且堆栈溢出,没有找到任何解决方案,您能帮我吗?
非常感谢!
答案 0 :(得分:4)
图案中有多余的反斜杠。只是remove it:
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'>
此外,无需将文字-
括在字符集[]
中。
答案 1 :(得分:1)
您的正则表达式中有一个过时的转义符:
\[A-Z]{2}
-不需要\
,因为[A-Z]
是字符类,您不想转义[
并将其视为字符。< / p>
如果删除它,您将拥有:
[A-Z]{2}[-]\d{3}[-]\[A-Z]{2}
注意,您也可以删除[]
周围的-
:
[A-Z]{2}-\d{3}-\[A-Z]{2}