我不知道你为什么要将车牌号与其前导空格和尾随空格匹配(如果我正确理解任务的话),而不是车牌号本身,但至少在大多数情况下,你的模式似乎与前导空格或尾随空格都不匹配。
然而,以下模式似乎可以完成这项工作:
^\s*(?:\d-[A-Z1-9]{5}|\d{2}-[A-Z1-9]{4})\s*$
如以下试验所示:
import re
your_pattern = r"^\s*[1-9][-][A-Z1-9]{5}|([1-9][0-9])[-][A-Z1-9]{4}\s*$"
my_pattern = r"^\s*(?:\d-[A-Z1-9]{5}|\d{2}-[A-Z1-9]{4})\s*$"
license_plate_numbers = [
"45-Y21A",
"3-78UTW",
" 67-AASE",
"5-37D8F",
"5-37D8F ",
" 5-37D8F ",
]
for license_plate_number in license_plate_numbers:
match1 = re.match(your_pattern, license_plate_number)
match2 = re.match(my_pattern, license_plate_number)
print(f"License plate number: '{license_plate_number}'")
if match1:
print(f"Your pattern matches: '{match1.group(0)}'")
else:
print("Your pattern does not match anything")
if match2:
print(f"My pattern matches: '{match2.group(0)}'")
else:
print("My pattern does not match anything")
print()
输出:
License plate number: '45-Y21A'
Your pattern matches: '45-Y21A'
My pattern matches: '45-Y21A'
License plate number: '3-78UTW'
Your pattern matches: '3-78UTW'
My pattern matches: '3-78UTW'
License plate number: ' 67-AASE'
Your pattern does not match anything
My pattern matches: ' 67-AASE'
License plate number: '5-37D8F'
Your pattern matches: '5-37D8F'
My pattern matches: '5-37D8F'
License plate number: '5-37D8F '
Your pattern matches: '5-37D8F'
My pattern matches: '5-37D8F '
License plate number: ' 5-37D8F '
Your pattern matches: ' 5-37D8F'
My pattern matches: ' 5-37D8F '