3

一致したテキストを変数$1、$ 2の()に入れるPerlの正規表現メモリ機能を使用しようとしています... 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 に答える