Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 根据CPlusPlus.com使用std::regex_迭代器_C++_Regex_C++11 - Fatal编程技术网

C++ 根据CPlusPlus.com使用std::regex_迭代器

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)([^ ]*)"); //

我正在阅读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)([^ ]*)");   // 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