我一直試圖做幾天,但仍然沒有得到正確的結果。正則表達式 - 在多行和他們的位置獲取多個捕獲
我需要從整個字符串(包括換行符)獲取所有捕獲,但不會在第一次匹配後返回。我有這個正則表達式:(\d+)\s*;
。結果應該只是數字(不是空格和分號),它應該從整個輸入字符串(它是多行)中取出它們。
因此,舉例來說,從該輸入:
5;
6 ;
7;
8 ;
它應該返回 「5」, 「6」, 「7」 和 「8」。
任何人都知道如何做到這一點在c + +?
謝謝!
編輯:
在評論中提到的鏈接,我想出了這個代碼:
std::regex regex(regex_str, std::regex_constants::icase);
for (std::sregex_iterator it = std::sregex_iterator(input.begin(), input.end(), regex); it != std::sregex_iterator(); ++it)
{
std::smatch m = *it;
std::cout << "\t" << m[1].str() << std::endl;
}
它工作得很好,但有一件事我忘了提:我還需要獲得每個捕獲的位置。使用m.position()
我可以獲得整場比賽的位置,但是如果在我正在尋找的捕獲組之前有什麼東西,它會告訴我一個錯誤的位置。那麼,我怎樣才能獲得捕獲的位置呢?
請出示你的代碼。我相信你可以通過'match_object [1] .str()'來訪問捕獲的值。 –
要獲得多個匹配,有多個方法。看到[這個答案](http://stackoverflow.com/questions/32765512/what-does-stdmatch-resultssize-return/32765645#32765645)爲例如如何可以完成。 –