3

我正在尝试使用 Perl 的正则表达式内存功能,它将匹配的文本放入变量 $1、$2 的 () 中...有谁知道我如何使用 Boost 来做到这一点,也许 Boost 将匹配的文本保存在不同的位置?以下代码行表示 $1 未定义。

 boost::regex ex( aaa(b+)aaa, boost::regex::perl );
 if(boost::regex_search( line ,ex ))
   set_value( $1 ); // Here $1 should contain all the b's matched in the parenthesis

谢谢,乔

4

1 回答 1

3

您将需要使用单独的重载boost::regex_search

特别是你想要一个传递boost::match_results结构的地方(通过引用)。只要搜索成功,它将使用子表达式(以及匹配的输入部分)填充。

boost::match_results<std::string::const_iterator> results;
std::string line = ...; 
boost::regex ex( "aaa(b+)aaa", boost::regex::perl );
 if(boost::regex_search( line ,results, ex ))
   set_value( results[1] );
于 2012-12-19T16:55:47.387 回答