正则基础

字符

[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相关推荐

  1. php 获取字符串中的url,php使用正则表达式获取字符串中的URL

    今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下:$str ='本文实例讲述了php匹配字符串里所有URL地址 ...

  2. php正则截取富文本编辑器中路径字符串_php使用正则表达式获取字符串中的URL

    今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下: $str ='本文实例讲述了php匹配字符串里所有URL地 ...

  3. php正则 网址,php使用正则表达式获取字符串中的URL

    今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下: $str ='本文实例讲述了php匹配字符串里所有URL地 ...

  4. android汉字转url,Android将文本中的URL转换为超链接工具类(原文本有超链接标签也适用)...

    public class TextToLinkUtil { public static String textContainUrlToLink(String urlText) { // 先拆分原字符串 ...

  5. RxSwift学习--核心逻辑再探

    前言 通过上一篇内容RxSwift学习--核心逻辑初探,对RxSwift有了些初步的认知,下面通过源码来看一下RxSwift到底有多骚 RxSwift核心逻辑再探 先把上篇中的例子代码搬过来: //第 ...

  6. SAP MM 工序委外场景再探 – 相关采购申请单据中的总账科目确定

    SAP MM 工序委外场景再探 – 相关采购申请单据中的总账科目确定 如下的采购申请,是工序委外场景的采购申请, 它在工单1000030 Release的时候被自动触发. 问题是:这个PR上的总账科目 ...

  7. IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)

    IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题) 参考文章: (1)IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题) (2)https:// ...

  8. 百度搜索URL中的参数都是什么

    最近,点石排名更新了一个新功能--站内搜索.其实理解起来也很简单,就是通过URL限定搜索结果为某个网站,从而参与点击(例如:https://www.baidu.com/s?wd=SEO&si= ...

  9. 再探神文《贝叶斯因子及其在JASP中的实现》

    大家好,我是很久没看甄嬛传的任唤迅(因为上半年看多了,现在看到果子狸就恶心). 今天是2022年10月8日,三个月前我们在复更之后策划了一些主题.但是天不遂人愿,角色的转变.生活的变化.团队的重组,这 ...

最新文章

  1. MySQL中的常见子查询语句
  2. Nhibernate 3.0 cookbook学习笔记 一对多与多对多映射
  3. 读logback源码系列文章(五)——Appender --转载
  4. 通过批处理文件自动安装apk到手机
  5. oracle帮助系统,开启Oracle的帮助系统
  6. QString 与中文问题
  7. 重学java基础第九课:软件和软件关系
  8. 知道吗?滚还是不滚的问题和信息论有关!
  9. 去中心化保证金交易平台Lever完成60万美元种子轮融资,NGC Venture等领投
  10. idea中npm安装总结与node-sass依赖安装等常见问题避坑总结
  11. android之weex之component插件开发
  12. ykhmi是什么触摸屏软件_触摸屏如何读写变频器参数?如何控制变频器?实操步骤及方法分享...
  13. Hadoop 2.0工作原理学习
  14. 流量控制系统pid整定方法仿真
  15. zuul网关的过滤器类型
  16. 不必再狂按空格键了!Word 里文字对齐推荐这4种方法
  17. 关于win11兼容性视图模式
  18. 基于逻辑回归的鸢尾花分类
  19. Fedora 34 Workstation安装后的配置
  20. 软考系统集成项目管理工程师模拟题(含答案、解析)

热门文章

  1. 【Python数据挖掘课程笔记】八.关联规则挖掘及Apriori实现购物推荐
  2. Python原创第十篇~字符串
  3. ARM Cortex-M0 原理与应用实践
  4. 计算机科学研究方向介绍
  5. 2499元起!vivo首款旗舰级平板正式发布 全系标配8GB运行内存
  6. ST众泰:未与长城汽车签署过任何战略协议
  7. 努比亚Z40 Pro定档2月25日:业界唯一定制35mm主摄+首发索尼IMX787
  8. 阿里巴巴张勇:有信心在本财年末国内年度活跃消费者达10亿
  9. 特斯拉宣布总部将从加州硅谷迁到得州
  10. 疯狂的华为MateX2:375万人在线抢,转手一台赚2万