views:

36

answers:

2

Hi All

I am working with the new version of boost 1.42 and I want to use regex with named sub groups. Below an example.

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 );

Do you know how to get the content of the match ? The traditional way is

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

but i don't want to use this way.

I want to use the name of the subgroups as usual in Perl and in regex in general. I tried this, but it didn't work.

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

Do you know how to get the value using the name of the subgroup?

Thanks AFG

A: 

AFAIK, there is no such option. See Understanding Marked Sub-Expressions and Captures and in particular the table on Perl and Boost.Regex equivalence. You will need to use the boost::match_results<IteratorType> to access any and all matches.

dirkgently
Hi dirkgently! I thank you for the URL. I found the solution, please see what I wrote below!Have a nice week end!
Abruzzo Forte e Gentile
A: 
Abruzzo Forte e Gentile