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.

