C++ Regex 库 - 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.