我對如何在std :: tr1 :: regex中運行regex_search函數後獲取結果感到困惑。 以下是演示我的問題的示例代碼。檢索std :: tr1 :: regex_search的結果
string source = "abcd 16000 ";
string exp = "abcd ([^\\s]+)";
std::tr1::cmatch res;
std::tr1::regex rx(exp);
while(std::tr1::regex_search(source.c_str(), res, rx, std::tr1::regex_constants::match_continuous))
{
//HOW TO FETCH THE RESULT???????????
std::cout <<" "<< res.str()<<endl;
source = res.suffix().str();
}
提到應該理想地剝離字符串中的「ABCD」,回到了我16000
我看到C匹配資源有兩個對象的正則表達式。第二個對象包含預期結果(該對象有三個成員(匹配的,第一個,第二個),值爲{true,「16000」,「」}}。對象表示爲什麼當我只運行一次regex_search時,爲什麼在這個特定情況下顯示2(res [0]和res [1])?我如何知道哪個對象會有預期的結果?
謝謝 蘇尼爾
考慮一下。源=「abcdabcdabcd」和exp =「ab」。該工具突出顯示藍色的ab。但是,當我使用正則表達式執行此代碼時,結果大小爲1,而res [0] .first爲「abcdabcdabcd」。我相信「abcdabcdabcd」的reg exp「ab」應該返回「ab」。這裏有什麼問題? –
錯在這裏是你調用'res [0] .first'。檢查'res [0]'的內容:它是'ab'! –
@SunilRaj編輯了我的答案並添加了更多信息 –