我的问题是,我在std::string
内有一个网站的HTML主体,现在我将所有内部的URL提取到std::vector< std::string >
中。我知道如何使用Regex检查字符串是否为URL,但我不知道如何将所有URL提取到std::vector
中。
有人可以将我指向正确的方向吗?
要从HTML文档中提取数据,您需要解析HTML。HTML规范描述了HTML的语法(请注意,HTML也有较旧的版本,因此请务必根据编写HTML文档的版本来解析(。该规范有一个非常有用的部分,标题为解析HTML文档,这与编写解析器非常相关。
解析HTML文档的结果应为文档对象模型树。您可以穿越这棵树以找到您要寻找的URL。
因此,在尝试手工处理时,请始终使用良好的标记读取器(例如boost属性树(。
但是假设您已经开发了用于解析HTML的子弹式正则判处。因为我们不希望嫉妒来自其他受害者,他们试图通过Regex穿越Markup语言处理的危险雷区;我们只会致电您的正则言论:regex re
,我们会说是1 st 捕获是您要在此vector
中存储的URL。
使用如此传奇的正则义务,您唯一需要的另一件事是regex_token_iterator
。鉴于进程的输入是,const sting text
您可以简单地执行此操作:
vector<string> foo { sregex_token_iterator(cbegin(text), cend(text), re, 1), sregex_token_iterator() }