再探正则表达式c++-html中搜索url
正则基础
字符
[a-z] // 匹配所有的小写字母
[A-Z] // 匹配所有的大写字母
[a-zA-Z] // 匹配所有的字母
[0-9] // 匹配所有的数字
[0-9\.\-] // 匹配所有的数字、句号、减号
[ \n\f\r\t\v] // 匹配所有的空白字符(空格、换行符、换页符、回车符、水平制表符、垂直制表符)
数字
^[0-9]{1,}$ // 匹配所有的正数
^[0-9]+$ // +与{1,}相等,表示前面的内容可以是1个或多个
^\-{0,1}[0-9]{1,}$ // 匹配所有的整数
^\-?[0-9]+$
^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{0,}$ // 匹配所有小数的正则
^\-?[0-9]{0,}\.?[0-9]{0,}$ // ?与{0,1}相等,表示前面的内容是可选的
^\-?[0-9]*\.?[0-9]*$ // *与{0,}相等,表示前面的内容可以是0个或多个
c++ regex
c++ regex 可以使用多种方式,std::regex_match,std::regex_search,使用这两种方式都很方便
,我们下面使用多种方式来做匹配,最后使用search 来搜索网页中的url
#include <iostream>
#include <string>
#include <memory>
#include <regex>
using namespace std;
int main()
{// 简单正则表达式匹配std::string fnames[] = { "addc<li data><a href=\"https://blog.csdn.net/qianbo04231/category_abc.html\"></li>abdd", "dddddddddddddddd<a href=\"\">链接</a>", "aaa.html", "dd adf aaa.png" };std::regex html_regex("[a-z]+\\.html");for (const auto &fname : fnames) {std::cout << fname << ": " << std::regex_match(fname, html_regex) << '\n';}// 提取子匹配std::regex base_regex("([a-z]+)\\.png");std::smatch base_match;for (const auto &fname : fnames) {if (std::regex_match(fname, base_match, base_regex)) {// 首个 sub_match 是整个字符串;下个// sub_match 是首个有括号表达式。if (base_match.size() == 2) {std::ssub_match base_sub_match = base_match[1];std::string base = base_sub_match.str();std::cout << fname << " has a base of " << base << '\n';}}}// 提取几个子匹配std::regex pieces_regex("([a-z]+)\\.([a-z]+)");std::smatch pieces_match;for (const auto &fname : fnames) {if (std::regex_match(fname, pieces_match, pieces_regex)) {std::cout << fname << '\n';for (size_t i = 0; i < pieces_match.size(); ++i) {std::ssub_match sub_match = pieces_match[i];std::string piece = sub_match.str();std::cout << " submatch " << i << ": " << piece << '\n';}}}std::smatch url_match;std::regex url_regex("<a href=\"([^>]+)\">",std::regex::icase);for (const auto &fname : fnames) {if (std::regex_search(fname, url_match, url_regex)) {for (size_t i = 0; i < url_match.size(); ++i) {std::ssub_match sub_match = url_match[i];std::string url= sub_match.str();std::cout << " urlmatch " << i << ": " << url << '\n';}}}getchar();
}
结果
addc<li data><a href="https://blog.csdn.net/qianbo04231/category_abc.html"></li>abdd: 0
dddddddddddddddd<a href="">链接</a>: 0
aaa.html: 1
dd adf aaa.png: 0
aaa.htmlsubmatch 0: aaa.htmlsubmatch 1: aaasubmatch 2: htmlurlmatch 0: <a href="https://blog.csdn.net/qianbo04231/category_abc.html">urlmatch 1: https://blog.csdn.net/qianbo04231/category_abc.html
再探正则表达式c++-html中搜索url相关推荐
- php 获取字符串中的url,php使用正则表达式获取字符串中的URL
今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下:$str ='本文实例讲述了php匹配字符串里所有URL地址 ...
- php正则截取富文本编辑器中路径字符串_php使用正则表达式获取字符串中的URL
今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下: $str ='本文实例讲述了php匹配字符串里所有URL地 ...
- php正则 网址,php使用正则表达式获取字符串中的URL
今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下: $str ='本文实例讲述了php匹配字符串里所有URL地 ...
- android汉字转url,Android将文本中的URL转换为超链接工具类(原文本有超链接标签也适用)...
public class TextToLinkUtil { public static String textContainUrlToLink(String urlText) { // 先拆分原字符串 ...
- RxSwift学习--核心逻辑再探
前言 通过上一篇内容RxSwift学习--核心逻辑初探,对RxSwift有了些初步的认知,下面通过源码来看一下RxSwift到底有多骚 RxSwift核心逻辑再探 先把上篇中的例子代码搬过来: //第 ...
- SAP MM 工序委外场景再探 – 相关采购申请单据中的总账科目确定
SAP MM 工序委外场景再探 – 相关采购申请单据中的总账科目确定 如下的采购申请,是工序委外场景的采购申请, 它在工单1000030 Release的时候被自动触发. 问题是:这个PR上的总账科目 ...
- IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)
IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题) 参考文章: (1)IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题) (2)https:// ...
- 百度搜索URL中的参数都是什么
最近,点石排名更新了一个新功能--站内搜索.其实理解起来也很简单,就是通过URL限定搜索结果为某个网站,从而参与点击(例如:https://www.baidu.com/s?wd=SEO&si= ...
- 再探神文《贝叶斯因子及其在JASP中的实现》
大家好,我是很久没看甄嬛传的任唤迅(因为上半年看多了,现在看到果子狸就恶心). 今天是2022年10月8日,三个月前我们在复更之后策划了一些主题.但是天不遂人愿,角色的转变.生活的变化.团队的重组,这 ...
最新文章
- MySQL中的常见子查询语句
- Nhibernate 3.0 cookbook学习笔记 一对多与多对多映射
- 读logback源码系列文章(五)——Appender --转载
- 通过批处理文件自动安装apk到手机
- oracle帮助系统,开启Oracle的帮助系统
- QString 与中文问题
- 重学java基础第九课:软件和软件关系
- 知道吗?滚还是不滚的问题和信息论有关!
- 去中心化保证金交易平台Lever完成60万美元种子轮融资,NGC Venture等领投
- idea中npm安装总结与node-sass依赖安装等常见问题避坑总结
- android之weex之component插件开发
- ykhmi是什么触摸屏软件_触摸屏如何读写变频器参数?如何控制变频器?实操步骤及方法分享...
- Hadoop 2.0工作原理学习
- 流量控制系统pid整定方法仿真
- zuul网关的过滤器类型
- 不必再狂按空格键了!Word 里文字对齐推荐这4种方法
- 关于win11兼容性视图模式
- 基于逻辑回归的鸢尾花分类
- Fedora 34 Workstation安装后的配置
- 软考系统集成项目管理工程师模拟题(含答案、解析)