Библиотека регулярных выражений C ++; как определить, какое чередование - PullRequest
2 голосов
/ 29 апреля 2020

Используя библиотеку регулярных выражений C ++ с измененной по умолчанию грамматикой ECMAscript, я хочу иметь возможность использовать regex_search для проверки соответствия строк регулярному выражению rx1|rx2|rx3, где rx1, rx2 и rx3 регулярные выражения и , если есть совпадение (т. е. если regex_search возвращает true), я хочу знать, какое из rx было сопоставлено. Возможно, строка будет соответствовать более чем одному из rx; в этом случае я хочу знать все из них.

Я знаю, как захватывать совпадения, и я полагаю, что мог бы сравнить детали матча, но это действительно сложно. Я ищу что-то простое - что-то, что говорит, что "rx1 был подобран", и т. Д. c.

Для простого примера предположим, что rx1 это A([[:digit::]+), rx2 это B([[:digit::]+) и rx3 равно C([[:digit::]+). Здесь я захватил строку di git и хочу узнать, является ли тестовая строка A, B или C. Мои настоящие строки намного сложнее, поэтому захват начальной буквы будет недостаточным, и в любом случае будет зависеть от количества захватов в каждом rx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...