/ / получаване на имена подгрупи - c ++, regex, boost, boost-regex

получаване на имена подгрупи - c ++, regex, boost, boost-regex

Аз работя с новата версия на boost 1.42 и искам да използвам regex с наименовани подгрупи. По-долу е даден пример.

std::string line("match this here FIELD=VALUE in the middle");
boost::regex rgx("FIELD=(?<VAL>\w+)", boost::regex::perl );
boost::smatch thisMatch;
boost::regex_search( line, thisMatch, rgx );

Знаете ли как да получите съдържанието на мача? Традиционният начин е

std::string result( mtch[1].first, mtch[1].second );

но аз не искате да използвате по този начин.

Искам да използвам името на подгрупите както обикновено в Perl и по принцип в regex. Опитах това, но не работи.

std::string result( mtch["VAL"].first, mtch["VAL"].second );

Знаете ли как да получите стойността, използвайки името на подгрупата?

Благодаря AFG

Отговори:

1 за отговор № 1

AFAIK, няма такава възможност. виждам Разбиране на маркираните под-изрази и заснемания и по-специално таблицата за Perl и Boost.Regex еквивалентност. Вие ще трябва да използвате boost::match_results<IteratorType> за достъп до всички и всички съвпадения.


1 за отговор № 2

Най-накрая намерих това, което искам да постигна.

std::cout << mtch["VAL"] << std::endl;

Опитах се и ще работи без никакви проблеми.

Мисля, че това е функция, налична само от версия 1.42 на тласък, но не съм сигурен.