开发者

getting names subgroups

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 thisM开发者_运维技巧atch;
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


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.


I finally found what I want to achieve.

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

I tried and it will work without any problems.

I think that is a feature available only since version 1.42 of boost, but I am not sure.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜