2012-12-19 44 views
3

我想使用Perl的正則表達式內存功能,它將()中的匹配文本放入變量$ 1,$ 2 ... 有沒有人知道我該怎麼做提升,也許升壓保存匹配的文本在不同的位置? 以下代碼行表示$ 1未定義。如何使用Perl風格的內存正則表達式與Boost庫匹配

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 

謝謝, 喬

+2

該功能被稱爲「捕捉」,如果這有助於您的研究。 –

回答

3

你會想,你在boost::match_results結構(參考)傳遞給使用你想要一個boost::regex_search

尤其是單獨的過載。只要搜索成功,這將填充子表達式(和匹配的輸入部分)。

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]); 
+0

非常感謝! 這樣做的工作:) –