C++ 根据CPlusPlus.com使用std::regex_迭代器
我正在阅读std::regex_迭代器上的文档,因为我试图学习如何使用它解析HTML标记。该网站给出的例子是C++ 根据CPlusPlus.com使用std::regex_迭代器,c++,regex,c++11,C++,Regex,C++11,我正在阅读std::regex_迭代器上的文档,因为我试图学习如何使用它解析HTML标记。该网站给出的例子是 #include <iostream> #include <string> #include <regex> int main () { std::string s ("this subject has a submarine as a subsequence"); std::regex e ("\\b(sub)([^ ]*)"); //
#include <iostream>
#include <string>
#include <regex>
int main ()
{
std::string s ("this subject has a submarine as a subsequence");
std::regex e ("\\b(sub)([^ ]*)"); // matches words beginning by "sub"
std::regex_iterator<std::string::iterator> rit ( s.begin(), s.end(), e );
std::regex_iterator<std::string::iterator> rend;
while (rit!=rend) {
std::cout << rit->str() << std::endl;
++rit;
}
return 0;
}
因此,我计划迭代该类型的表达式,同时跟踪是否仍在标记中,即是否传递了'>'字符。这样做会不会太难
感谢您提供的任何指导。如果rend从未初始化,您的意思是什么?显然,std::regex_迭代器有一个默认构造函数。由于迭代只是前向迭代,所以末端迭代器只需要是合适的,以检测是否使用了末端。默认构造函数可以相应地设置rend
这是一个习惯用法,在标准C++库中的其他地方使用,例如,用于STD:ISTRAMAMIDER。理想情况下,可以使用不同的类型来指示结束迭代器。例如,在这个问题上,链接是指向四个页面中的第一个页面,但标准当前要求在使用算法时两种类型匹配
关于使用正则表达式解析HTML,请参阅。如果从未初始化rend,您的意思是什么?显然,std::regex_迭代器有一个默认构造函数。由于迭代只是前向迭代,所以末端迭代器只需要是合适的,以检测是否使用了末端。默认构造函数可以相应地设置rend这是一个习惯用法,在标准C++库中的其他地方使用,例如,用于STD:ISTRAMAMIDER。理想情况下,可以使用不同的类型来指示结束迭代器。例如,在这个问题上,链接是指向四个页面中的第一个页面,但标准当前要求在使用算法时两种类型匹配
关于使用正则表达式解析HTML,请参阅。rend不是未初始化的,它是默认构造的。您链接的页面清楚显示: 默认构造函数1构造序列结束迭代器 由于默认构造似乎是获得序列结束迭代器的唯一方法,因此比较rit和rend是测试rit是否已用尽的正确方法。rend不是未初始化的,它是默认构造的。您链接的页面清楚显示: 默认构造函数1构造序列结束迭代器 由于默认构造似乎是获得序列结束迭代器的唯一方法,因此比较rit和rend是测试rit是否已耗尽的正确方法([A-Za-z0-9\\-]+)\\s*=\\s*(['\"])(.*?)\\2