У меня есть два регулярных выражения (альтернативно, их строки шаблона), и я хотел бы их объединить.
Это дано re1
и re2
, я хотел бы построить re3
, гдеre3
соответствует S, если re1
соответствует некоторому префиксу S, а затем re2
соответствует остатку.
Некоторые плохие идеи:
Соответствие re1
а затем re2
на остаток.Это невозможно, например, для /x*/ + /x/
в строке «xxx», поскольку жадное совпадение потребляет последние x.
Добавить шаблоны.Это терпит неудачу, например, на /a|b/
+ /c/
, поскольку это приводит к /a|bc/
, и |
имеет более низкий приоритет, чем сцепление.
Некоторые лучшие идеи:
Добавить шаблоны внутри групп без захвата.Это решает проблему приоритета;однако это неправильно обрабатывает обратные ссылки.В настоящее время это моя наименьшая плохая идея.
"Откат вручную" путем перечисления всех способов, которыми re1
может соответствовать S, а затем re2
наостаток после матча.К сожалению, в Python, похоже, нет никакой поддержки для этого.
Какие-нибудь лучшие подходы?Спасибо!