#python #regex
#python #регулярное выражение
Вопрос:
Вот упражнение, которое я пытаюсь выполнить:
- Номерной знак Номерной знак состоит из 2 заглавных букв, тире (‘-‘), 3 цифр, тире (‘-‘) и, наконец, 2 заглавных букв. Напишите скрипт для проверки того, что входная строка является номерным знаком (метод input ()). Если это правильно, выведите «хорошо». Если это неверно, выведите «Not good».
Вот мой код:
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 и в stack overflow, не нашел никакого решения, не могли бы вы мне помочь, ребята?
Большое спасибо!
Комментарии:
1. я работаю над jupyter notebook, поэтому я уже импортировал регулярное выражение
2. попробуйте изменить
[A-Z]{2}[-]d{3}[-][A-Z]{2}
на[A-Z]{2}[-]d{3}[-][A-Z]{2}
Ответ №1:
У вас есть посторонняя обратная косая черта в шаблоне. Просто удалите это:
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'>
Кроме того, нет необходимости заключать литерал -
в набор символов []
.
Ответ №2:
В вашем регулярном выражении используется устаревший escape-символ:
[A-Z]{2}
—
Не требуется, поскольку [A-Z]
это символьный класс, вы не хотите экранировать [
и рассматривать его как символ.
Если вы удалите это, у вас будет:
[A-Z]{2}[-]d{3}[-][A-Z]{2}
Обратите внимание, что вы также можете удалить []
вокруг вашего -
:
[A-Z]{2}-d{3}-[A-Z]{2}