2012-12-10 135 views
1
boost::regex re("(abc)(.*?)"); 
boost::smatch m; 
std::string str = "abcdlogin"; 
boost::regex_search(str, m, re); 

我發現m [1] .first是「abcdlogin」,m [1] .second是「dlogin」。boost regex_search找不到第一個匹配項

但我認爲是m [1]。首先應該是「abc」?

回答

1

documentation注意到:

M [n]的。首先:對於所有的整數n < m.size(),序列 的匹配子表達式n的開始。或者,如果子表達式n 不參與比賽,則最後。

M [n]的。第二:對於所有的整數n < m.size(),即匹配子表達式n的序列 的末尾。或者,如果子表達式n 不參與比賽,則最後。

注意它們是如何將迭代器轉換成匹配的子表達式。 在你的例子中,如果你想要一個帶有​​的字符串,你可以像這樣構造一個字符串:std::string s(m[1].first, m[1].second);

+0

謝謝,它現在工作:) –

相關問題