C++ 正則表示式庫 - regex_iterator



描述

它是一種迭代器型別,用於迭代序列中相同正則表示式模式的不同匹配項。

宣告

以下是 std::regex_iterator 的宣告。

emplate <class BidirectionalIterator,
          class charT=typename iterator_traits<BidirectionalIterator>::value_type,
          class traits=regex_traits<charT> > class regex_iterator;

C++11

emplate <class BidirectionalIterator,
          class charT=typename iterator_traits<BidirectionalIterator>::value_type,
          class traits=regex_traits<charT> > class regex_iterator;

C++14

emplate <class BidirectionalIterator,
          class charT=typename iterator_traits<BidirectionalIterator>::value_type,
          class traits=regex_traits<charT> > class regex_iterator;

引數

  • BidirectionalIterator - 它是一種雙向迭代器型別,用於迭代目標字元序列。

  • charT - 它是一種字元型別。

  • traits - 它是一種正則表示式特徵型別。

返回值

它返回一個包含結果序列的字串物件。

異常

No-noexcept - 此成員函式從不丟擲異常。

示例

以下為 std::regex_iterator 的示例。

#include <regex>
#include <iterator>
#include <iostream>
#include <string>

int main() {
   const std::string s = "Tutorialspoint.com india pvt ltd.";
 
   std::regex words_regex("[^\\s]+");
   auto words_begin = 
      std::sregex_iterator(s.begin(), s.end(), words_regex);
   auto words_end = std::sregex_iterator();
 
   std::cout << "Found " 
      << std::distance(words_begin, words_end) 
      << " words:\n";
 
   for (std::sregex_iterator i = words_begin; i != words_end; ++i) {
      std::smatch match = *i;
      std::string match_str = match.str();
      std::cout << match_str << '\n';
   }
}

輸出應如下所示:

Found 4 words:
Tutorialspoint.com
india
pvt
ltd.
regex.htm
廣告

© . All rights reserved.