проблема в обнаружении 2 последовательных заглавных букв с помощью регулярного выражения Python - PullRequest
2 голосов
/ 24 апреля 2019

Вот упражнение, которое я пытаюсь выполнить:

  1. Номерной знак Номерной знак состоит из 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 и по переполнению стека, не нашел решения, не могли бы вы помочь мне, ребята?

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 24 апреля 2019

У вас есть посторонний обратный слеш в шаблоне.Просто удалите его :

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 голос
/ 24 апреля 2019

В вашем регулярном выражении есть устаревший escape-символ:

\[A-Z]{2} - \ не требуется, поскольку [A-Z] является классом символов, вы не хотите экранировать [ и относитесь к нему как к персонажу.

Если вы удалите это, у вас будет:

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

Примечание Вы также можете удалить [] вокруг вашего -:

[A-Z]{2}-\d{3}-\[A-Z]{2}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...