Объединить несколько многословных регулярных выражений Python - PullRequest
0 голосов
/ 18 января 2019

Я хочу создать несколько регулярных выражений Python, комбинируя меньшие шаблоны многократного использования, и я хотел бы, чтобы шаблоны многократного использования использовали флаг verbose. Например, предположим, что у меня был простой шаблон для цифр и один для символа в нижнем регистре,

DIGIT_PATTERN = re.compile(r"""
    (?P<my_digit_pattern>        # start named group
      \d+                        # 1 or more integers
    )                            # close named group
    """, re.VERBOSE)
CHAR_PATTERN = re.compile(r"""
    (?P<my_char_pattern>         # start named group
      [a-z]                      # a character
    )                            # close named group
    """, re.VERBOSE)

Есть ли способ, которым я могу создать новый шаблон, который состоит из вышеуказанных шаблонов? Что-то вроде

NEW_PATTERN = CHAR_PATTERN followed by DIGIT PATTERN followed by CHAR_PATTERN

, который я бы хотел сопоставить со строкой a937267t. Приведенные выше примеры сильно упрощены, но главное - как объединить регулярные выражения, которые были определены с подробным флагом.

UPDATE

Это то, что я имею до сих пор ... может быть, единственный путь ....

NEW_PATTERN = re.compile(
    CHAR_PATTERN.pattern + 
    DIGIT_PATTERN.pattern + 
    CHAR_PATTERN.pattern,
    re.VERBOSE
)

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

1 Ответ

0 голосов
/ 18 января 2019
NEW_PATTERN = re.compile(r"""
    (?P<my_new_pattern>         # start named group
      [a-z]                      # a character
      \d+                        # 1 or more integers
      [a-z]                      # a character
    )                            # close named group
    """, re.VERBOSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...