Регулярное выражение для проверки штрих-кодов - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок в регулярных выражениях. Мне трудно все понять, и я хотел написать не очень простую программу для электронной почты, но потом решил выбрать штрих-коды. Штрих-код действителен, если он:

  1. заключен в «@», за которым следует один или несколько «#»
  2. Длина не менее 6 символов (без окружающего «@») или "#")
  3. Начинается с заглавной буквы
  4. Содержит только буквы (строчные и прописные) и цифры
  5. Заканчивается заглавной буквой

Я попробовал пару вещей и ничего не добился. Я даже смотрел подробное объяснение регулярных выражений, но все равно ничего не могу придумать.

Пример ввода: @ # GoodCodE @ # будет действительным, а @ Invalid_CodE @ / @ # InvalidTry @ # - нет.

(@ # +) ([AZ] [A-Za-z0-9] {4,} [AZ]) (?: @ # +) Спасибо за помощь! ? = не включает @ # +, поэтому я заменил его на?

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Попробуйте это:

import re


def check_re(inval):
    """
    >>> check_re('@#GoodCodE@#')
    True
    >>> check_re('@Invalid_CodE@/@#InvalidTry@#')
    False
    >>> check_re('@#IdE@#')
    False
    """
    bar_re = re.compile(r'^@#+[A-Z]([A-Za-z0-9]){4,}[A-Z]@#+$')
    m = re.match(bar_re, inval)
    return m is not None


if __name__ == '__main__':
    import doctest
    doctest.testmod()

См. Объяснение в Ответ Алена .

1 голос
/ 04 апреля 2020

Вы можете использовать следующее выражение: ^@#+[A-Z][A-Za-z0-9]{4,}[A-Z]@#+$

Разбить это означает:

  • ^ требуется начало строки (строки)
  • @ соответствует @ символу
  • #+ соответствует одному или нескольким из # символов
  • [A-Z] соответствует заглавной букве (считается как 1 из 6)
  • @[A-Za-z0-9]{4,} соответствует 4 или более заглавным / строчным буквам и цифрам
  • [A-Z] соответствует заглавной букве (считается последней из 6)
  • @ соответствует @ символу
  • #+ соответствует одному или нескольким # символам
  • $ требуется конец строки (строки)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...