Как сопоставить вторую группу, если совпадает только первая группа - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь написать регулярное выражение для сценария Python, который соответствует второй группе, если только первая группа совпадает.

Я пытаюсь получить даты, если текст выглядит следующим образом:

Cancel Date: 08/09/19
Cancellation Date: 08/05/19

Не следует захватывать дату, если в тексте есть что-то еще, кроме того, что упомянуто выше. Например, срок: 12/34/12 не должен совпадать или захватывать даты.

Текущее решение регулярных выражений:

(Cancel Date:|Cancellation Date:)[\s\n\r\t]*(\d{1,2}/\d{1,2}/\d{2})

Я использую regex.search (). Group (2), чтобы получить информацию, но, похоже, продолжает получать ошибку атрибута без типа для датыдолжны быть. Любая помощь или альтернативное решение приветствуется. Я фиксирую регулярное выражение в файле конфигурации в формате xml.

1 Ответ

0 голосов
/ 01 ноября 2019

Кажется, это работает для меня. Правильно ли вы экранировали свой шаблон регулярных выражений или сделали его необработанной строкой?

import re as regex

strings = [
    "Cancel Date: 08/09/19",
    "Cancellation Date: 08/05/19",
    "Due date: 12/34/12"
]

pattern = "Cancel(lation)? Date:[\s]*(\\d{1,2}/\\d{1,2}/\\d{2})"

for string in strings:
    match = regex.match(pattern, string)
    if match is None:
        print("No Match")
    else:
        print(match.group(2))

Вывод:

08/09/19
08/05/19
No Match
...