我的问题是,我在std::string
内部有一个网站的HTML正文,现在我要将所有内部网址提取到std::vector< std::string >
。我知道如何使用正则表达式来检查字符串是否是一个URL,但我不知道如何将所有URL提取到std::vector
。
有人能指出我正确的方向吗?
答案 0 :(得分:2)
要从HTML文档中有意义地提取数据,您需要解析HTML。 HTML specification描述了HTML的语法(请注意,还有旧版本的HTML,因此请务必根据编写HTML文档的版本进行解析)。该规范有一个非常有用的标题为Parsing HTML documents的部分,它与编写解析器非常相关。
解析HTML文档的结果应该是Document Object Model树。您可以遍历此树以查找您要查找的URL。
答案 1 :(得分:1)
所以使用好的标记语言阅读器(例如Boost Property Tree)总是比手动处理更合适。
但假设我们说你已经开发了一个用于解析html的防弹正则表达式。因为我们不希望嫉妒来自其他受害者,他们试图通过正则表达式跨越标记语言处理的危险雷区;我们只是打电话给你的正则表达式:class OrganizationDetailComponent implements OnActivate {
final Location _location;
Organization organization = new Organization();
OrganizationDetailComponent( this._location);
@override
Future onActivate(routeStatePrevious, routeStateCurrent) async {
if (routeStateCurrent.parameters.isNotEmpty) {
var uuid = routeStateCurrent.parameters[AppRotas.organizationUuidParameter];
if (uuid != null && uuid.isNotEmpty) {
organization = await _organizationService.getOrganizationById(uuid);
}
}
}
void goBack() {
_location.back();
}
}
我们会说它的1 st 捕获是你想要存储在这个{{1}中的网址regex re
1}}。
有了这样一个传奇的正则表达式,你唯一需要的是regex_token_iterator
。鉴于流程输入是vector
,您可以简单地执行此操作:
const sting text