簡體   English   中英

獲取與Boost :: Regex的最后一場比賽

[英]Get last match with Boost::Regex

我在帶有Boost的C ++中有一個正則表達式,可以匹配多行字符串中的行。 正則表達式搜索找到第一個匹配項,但是我對匹配的最后一行感興趣。

我現在使用的代碼是這樣的:

matched = boost::regex_search(input, results, regex);               
if (!matched) {
    return -1; // error code
}
matched_string = results["Group"]; 

如果regex"(?<Group>Data.)"input"Data1 Data2 Data3" ,則matched_string現在是"Data1" 我希望它是"Data3"

match_results operator[]返回sub_match sub_match繼承std::pair的迭代器。 firstsecond成員對應於匹配范圍。 因此,您可以將其second用作新搜索的起點。 例如:

string  input = "Data1 Data2 Data3";
regex  re("(?<Group>Data.)");
string::const_iterator  begin = input.begin(), end = input.end();
smatch  results;
while ( regex_search( begin, end, results, re ) ) {
  smatch::value_type  r = results["Group"];
  begin = r.second;
}

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM