有没有任何方法可以从C++中的文本中提取URL
Is there any way to extract URL from text in C++
在PHP中,我可以编写正则表达式从文本中提取URL。想知道C++中有这样的类或方法吗?
我正在处理流数据,其中可能包含URL。我想从中提取每个具有计数值的URL。
我可以使用向量或其他数据结构进行后期处理,但问题在于标题。
C++11引入<regex>
作为标准库的一部分。
让我们来看看如何使用它。
首先,我们需要导入标头。
#include <regex>
现在让我们声明我们的URL正则表达式。现在我们将使用一些非常简单的东西。我将让您用一个更完整的正则表达式来替换它。注意我们是如何使用\
而不仅仅是来逃避事物的。
本身是C++中的一个特殊字符,因此我们需要对其进行转义
std::regex url(".*\..*");
让我们创建一个字符串来对此进行测试。
std::string url_test = "example.com";
现在,让我们检查url_test
是否与url
匹配,并相应地打印出一条消息。
if(regex_match(url_test, url)) {
std::cout << "It's a url!" << std::endl;
} else {
std::cout << "Oh snap! It's not a url!" << std::endl;
}
我们的完整程序:
#include <iostream>
#include <regex>
#include <string>
int main()
{
std::regex url(".*\..*");
std::string url_test = "example.com";
if(regex_match(url_test, url)) {
std::cout << "It's a url!" << std::endl;
} else {
std::cout << "Oh snap! It's not a url!" << std::endl;
}
}
更多信息,请访问http://www.cplusplus.com/reference/regex/
关于正则表达式,我使用以下内容来匹配大量链接:
b(?:(?:(?:https?|ftp|file)://|www.|ftp.)[-A-Z0-9+&@#/%?=~_|$!:,.;]*[-A-Z0-9+&@#/%=~_|$]
| ((?:mailto:)?[A-Z0-9._%+-]+@[A-Z0-9._%-]+.[A-Z]{2,4})b)
|"(?:(?:https?|ftp|file)://|www.|ftp.)[^"rn]+"?
|'(?:(?:https?|ftp|file)://|www.|ftp.)[^'rn]+'
这允许匹配开头有和没有http/https的web链接、开头有和不有mailto的电子邮件链接、ftp链接和文件链接,以及单引号或双引号内的链接。
我还没有使用C++(<regex>
)的regex功能,但今天我们将看一看,并带回一些代码示例。
相关文章:
- 如何从也包含C++字母的文本文件中提取某些数字?
- 模式匹配文本并提取C++中的数据
- 遍历对象向量,并找到与从文本文件中提取的对象匹配的变量
- 将文本文件数据读入字符数组时提取运算符的歧义
- 使用 substr 提取文本文件时出现问题
- 接受多个输入(如 +、- 和平方数字)的计算器.从文本文件中提取信息
- 长方程加法/减法计算器,从文本文件中提取运算符和数字
- 从 PDF 中提取第一行文本
- 在特定字段中关键字搜索后,从文本文件中提取多个记录
- 如何用c++打印从文本文件中提取的非英文字符
- 程序未正确从文本文件中提取信息
- 从C 中的文本提取数字---分割故障
- 从文本文件中读取输入并将其提取 - C++
- 从C++中的文本文件中提取并使用特定数据
- 有没有任何方法可以从C++中的文本中提取URL
- 可视化从文本C++中提取字符串数据
- 分析文本文件以提取字符串
- 从文本文件中提取单个句子...我还没有做对
- PoDoFo从pdf中提取文本+坐标
- 在C++中,如何提取文本文件的路径