正则表达式--教程二(语法):https://blog.csdn.net/alzzw/article/details/99470144

正则表达式--教程三(匹配规则及示例):https://blog.csdn.net/alzzw/article/details/99474981

正则表达式--元字符:https://blog.csdn.net/alzzw/article/details/99474676

正则表达式

教程:

  • 正则表达式( Regular Expression)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符")。
  • 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
  • 正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真阅读本教程,加上应用的时候进行一定的参考,掌握正则表达式不是问题。
  • 许多程序设计语言都支持利用正则表达式进行字符串操作。

实例:

regex_match()算法可以用于比较一个给定源字符串和一个正则表达式模式,如果模式匹配整个源字符串,则返回true,否则返回false

#include <iostream>
#include <regex>
#include <string>
using namespace std;int main()
{string str = "abc123def";regex ptt("[0-9]+");cout << regex_match(str, ptt) << endl;return 0;
}//匹配不成功

简介:

除非您以前使用过正则表达式,否则您可能不熟悉一些术语。但是,毫无疑问,您已经使用过不涉及脚本的某些正则表达式概念。

例如,您很可能使用?和*通配符来查找硬盘上的文件。?通配符匹配文件名中的0个或1个字符,而*通配符匹配零个或多个字符。像data(w)?.dat这样的模式将查找下列文件:

data.dat

datal. dat

data2. dat

datax. dat

dataN. dat

使用*字符代替?字符扩大了找到的文件的数量。data,*,dat匹配下列所有文件:

data. dat

datal. dat

data2. dat

data12. dat

datax. dat

dataxYz dat

尽管这种搜索方法很有用,但它还是有限的。通过理解*通配符的工作原理,引入了正则表达式所依赖的概念,但正则表达式功能更强大,而且更加灵活正则表达式的使用,可以通过简单的办法来实现强大的功能。下面先给出一个简单的示例:

^为匹配输入字符串的开始位置。
                              [0-9]+匹配多个数字,[0-9]匹配单个数字,+匹配一个或者多个。
                               abc$匹配字母abc并以abc结尾,$为匹配输入字符串的结束位置。

我们在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符(),并设置用户名的长度我们就可以使用以下正则表达式来设定.

以上的正则表达式可以匹配 runco、 runco1、run-oob、 run oob,但不匹配r,因为它太短了,也不匹配 runco$.因为它包含特殊字符。

实例:匹配以数字开头,并以abc结尾的字符串:

#include <iostream>
#include <regex>
#include <string>
using namespace std;int main()
{string str = "123abc";regex ptt("[0-9]+abc");cout << regex_match(str, ptt) << endl;return 0;
}//匹配成功

应用及发展:

典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难

通过使用正则表达式,可以

  • 测试字符串内的模式:例如可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
  • 替换文本: 可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
  • 基于模式匹配从字符串中提取子字符串: 可以查找文档内或输入域内特定的文本

例如,您可能需要搜索整个网站,删除过时的材料,以及替换某些HTML格式标记。在这种情况下,可以使用正则表达式来确定在每个文件中是否出现该材料或该HTML格式标记。此过程将受影响的文件列表缩小到包含需要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料。最后,可以使用正则表达式来搜索和替换标记。

发展历史:正则表达式的祖先"可以一直上溯至对人类神经系统如何工作的早期研究。 Warren Mc Culloch和Wate r Pitts这两位神经生理学家研究出一种数学方式来描述这些神经网络

1956年,一位叫 Stephen Kleene的数学家在 McCulloch和Pits早期工作的基础上,发表了一篇标题为“神经网事件的表示法“的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数的表达式,因此采用“正则表达式这个术语。
随后,发现可以将这一工作应用于使用 Ken Thompson的计算搜索算法的一些早期研究, Ken Thomps on是Unx的主要发明人。正则表达式的第一个实用应用程序就是Unx中的qed编辑器。
如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。

应用领域:

正则表达式--教程一 简介(共三篇)相关推荐

  1. 步步理解 JAVA 泛型编程 – 共三篇

    http://learning.iteye.com/blog/1295901 FROM: http://unmi.cc/understand-java-generic-3 步步理解 JAVA 泛型编程 ...

  2. AVB简介--第三篇:AVTP简介

    转自:AVB简介--第三篇:AVTP简介 本文是AVB系列文章的第三篇,主要介绍AVB协议族中的音视频传输协议AVTP(IEEE Std 1722-2016). AVTP是个链路层传输协议,其主要作用 ...

  3. DirectX简介 第三篇 DirectSound简介

    DirectSound简介 1.       DirectSound特性:速度快.可控制性强 (1)       当硬件空闲时自动启用硬件加速 (2)       不受数量限制的声源混音 (3)    ...

  4. Redis常用命令(三,共三篇)

    目录 1.redis的配置文件: 1).redis配置文件中关于网络的配置: 2).常规配置: 3).安全配置: 2.redis的持久化: 1.RDB策略: 在指定时间间隔内,redis服务执行指定次 ...

  5. jsh和jq(jquery)的区分区别2(共三篇,详见我csdn)

    1 定位元素  JS  document.getElementById("abc") jQuery  $("#abc") 通过id定位  $(".ab ...

  6. 正则表达式--教程二(语法)

    正则表达式--教程一 简介(共三篇):https://blog.csdn.net/alzzw/article/details/99463959 正则表达式--教程三(匹配规则及示例):https:// ...

  7. 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)

    转:https://blog.csdn.net/forezp/article/details/69808079 最新版本: 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign ...

  8. SpringCloud核心教程 | 第三篇:服务注册与发现 Eureka篇

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...

  9. 第三篇——第二部分——第一文 SQL Server镜像简介

    原文: 第三篇--第二部分--第一文 SQL Server镜像简介 原文出处:http://blog.csdn.net/dba_huangzj/article/details/26951563 镜像是 ...

最新文章

  1. php 自动处理小图的代码,PHP 处理图片的类实现代码
  2. VTK:PolyData之PolyDataToUnstructuredGrid
  3. 创建线程时候多参数传递方法及参数改变问题--扫雷辅助(三)
  4. 步步理解 JAVA 泛型编程 – 共三篇
  5. ttribute value is quoted with which must be escaped when used within the value
  6. ubuntu安装中文字体,python plt 绘图显示中文
  7. CentOS网络问题汇总
  8. WAV声音档转PCM
  9. Excel常用10个函数
  10. 【面试记录】比亚迪二面
  11. 手机网络IP地址问题
  12. excel的最大行数和列数
  13. 散射回波仿真Matlab,基于散射中心模型的ISAR回波仿真方法
  14. Django学习 day79之drf第三日
  15. 文献阅读 - Combining Sketch and Tone for Pencil Drawing Production
  16. 交通预测论文翻译:Deep Learning on Traffic Prediction: Methods,Analysis and Future Directions
  17. 难溶盐在盐酸中的溶解度分析
  18. 英语口语在线测试软件,4个最实用的英语口语练习软件
  19. 华为推谷歌系统智能手机火拼微软三星
  20. web端对接语音通话(腾讯云)

热门文章

  1. java二维码之生成与解析
  2. 厦大 1395 组合
  3. u深度做linux启动盘,u深度启动盘制作
  4. Java分布式中文分词组件 - word分词(转自 https //github com/ysc/word)
  5. html动态网页添加音频_将音频添加到网页
  6. 少年宫计算机室管理制度,少年宫计算机室活动计划](4页)-原创力文档
  7. jQuery 下载保存图片的方法
  8. solidworks显示无法连接到服务器,SOLIDWORKS Electrical—无法连接协同服务器
  9. 实训日志(十)——达芬奇调色
  10. 2021下半年软考案例分析试题及答案解析