Два шаблона в re.compile - PullRequest
       5

Два шаблона в re.compile

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

У меня есть текст, который нужно сопоставить, где он может иметь P / N или PN, но регулярное выражение должно соответствовать обеим строкам.

Пример кода:

PATTERN = re.compile(r'\(USED ON +P\/N {0,1}([^\)]+)')
text = '(USED ON P/N D511835AAB503)'
match = USED_ON_PN_PATTERN.search(text)
if match:
    print(match.group(1))
else:
    print('else')

Вывод :

D511835AAB503

Но код должен совпадать и с (USED ON PN D511835AAB503), и match.group (1) должна возвращать D511835AAB503.

1 Ответ

2 голосов
/ 09 апреля 2020

Вам просто нужно добавить ? после символа sla sh, чтобы указать, что это необязательно.

import re

PATTERN = re.compile(r'\(USED ON +P\/?N {0,1}([^\)]+)')
tests = ['(USED ON P/N D511835AAB503)', '(USED ON PN D511835AAB503)']
for test in tests:
    match = PATTERN.search(test)
    if match:
        print('"{}" matched {}'.format(test, match.group(1)))
    else:
        print('No match in "{}"'.format(test))

, который выводит

"(USED ON P/N D511835AAB503)" matched D511835AAB503
"(USED ON PN D511835AAB503)" matched D511835AAB503
...