Используя библиотеку регулярных выражений 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
.