Мне дано регулярное выражение, состоящее из необработанного текста и групп захвата. Как извлечь из него все фрагменты необработанного текста?
Например:
Код: Выделить всё
pattern = r"Date: (\d{4})-(\d{2})-(\d{2})"
assert extract(pattern) == ["Date: ", "-", "-", ""]
Здесь последняя запись в результате представляет собой пустую строку, что указывает на отсутствие необработанного текста после последней группы захвата.
Решение не следует извлекать необработанный текст внутри групп захвата:
Код: Выделить всё
pattern = r"hello (world)"
assert extract(pattern) == ["hello ", ""]
Решение должно корректно работать и с экранированными символами, например:
Код: Выделить всё
pattern = r"\(born in (.*)\)"
assert extract(pattern) == ["(born in ", ")"]
В идеале решение должно быть эффективным и избегать циклического перебора строки в Python.
Подробнее здесь:
https://stackoverflow.com/questions/791 ... from-regex