正则表达式

一、正则表达式的概述

1、概念

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

2、作用

通常用于判断语句中,用来检查某一字符串是否满足某一格式

• 正则表达式是由普通字符与元字符组成

• 普通字符包括大小写字母、数字、标点符号及一些其他符号

• 元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式

3、可达到的目的

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

  • 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)
  • 可以通过正则表达式,从字符串中获取我们想要的特定部分

二、基础正则

1、基础正则常见元字符:(支持的 工具: grep、 egrep、 sed、awk)

\ : 转义字符,用于取消特殊符号的含义

^ : 匹配字符串开始的位置

$ : 匹配字符串结束的位置

. : 匹配除\n之外的任意的一个字符

* : 匹配前面子表达式0次或者多次

[list] : 匹配list列表中的一个字符

[^list] : 匹配任意非list列表中的一个字符

{n} : 匹配前面的子表达式n次

{n,} : 匹配前面的子表达式不少于n次

{n,m} : 匹配前面的子表达式n到m次

注: egrep、 awk使用{n}、{n,}、 {n, m}匹配时“{}"前不用加“\”

2、实例操作

2.1 * 匹配前面子表达式0次或者多次


  

2.2 . 匹配除\n之外的任意的一个字符


  

2.3 {n} : 匹配前面的子表达式n次;{n,} : 匹配前面的子表达式不少于n次;{n,m} : 匹配前面的子表达式n到m次

注: egrep、 awk使用{n}、{n,}、 {n, m}匹配时“{}"前不用加“\”

grep -E 相当于 egrep

2.4 ^ 匹配字符串开始的位置;$ 匹配字符串结束的位置;^$匹配空行


  

2.5 [list] 匹配list列表中的一个字符;[^list] 匹配任意非list列表中的一个字符

三、扩展正则

1、扩展正则表达式元字符: ( 支持的工具: egrep、 awk,也可用grep -E)

+ : 匹配前面 子表达式1次以上
? : 匹配前面 子表达式0次或者1次
 
() : 将括号中的字符串作为一个整体
 
| : 以或的方式匹配字条串
{} :允许为可重复的正则表达式指定一个上限,这通常称为间隔(interval)
    {n} 重复n次;{n,} 重复n次或更多次;{n,m} 重复n到m次

2、实例操作

2.1、 + 匹配前面 子表达式1次以上


    

2.2 ? 匹配前面 子表达式0次或者1次


  

2.3 () 将括号中的字符串作为一个整体

2.4 | 以或的方式匹配字条串

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/6956.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM 程序计数器(PC)

PC寄存器的概念 JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器&#…

【蓝桥杯冲刺】日期类专题特训

目录 1. 日期累加 题目描述 输入 输出 代码 2. 日期差值 题目描述 输入 输出 代码 3. 打印日期 题目描述 输入 输出 代码 写在最后: 1. 日期累加 题目链接:日期累加 题目描述 输入 1 2008 2 3 100 输出 2008-05-13 代码 #include…

如何在 Linux 中查找所有符号链接,这几个命令得会!

在Linux中,符号链接(Symbolic Link)是一种非常常见的文件类型,也称为软链接。符号链接是指向另一个文件的指针,而不是实际的数据。它允许用户创建一个指向另一个文件的虚拟文件,这样用户可以在不改变实际文…

JVM解析原理

目录1.JVM内存结构2.JIT及时编译器的原理,优化以及切换编译器类型2.1解释型语言和编译语言2.2JIT即时编译器(Just In Time Compiler)3.类的加载机制和类的加载器3.1类的加载机制3.2类的加载器4.双亲委派机制4.1定义4.2优点4.3总结5.虚拟机栈详…

读破万卷,神交古人,突破ChatGPT4096的Token限制,建立自己的垂直领域资料人工智能助理

ChatGPT的泛用性极高,上知天文,下通地理,参考古今,博稽中外,几乎无所不知,无所不晓。但如果涉及垂直领域的专业知识点,ChatGPT难免也会有语焉不详,闪烁其词的毛病,本次我…

16从零开始学Java之Java里的输入与输出语句有哪些?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们在前面的文章中,学习了如何创建Java文件,也学习了Java里的标识符、运算符、进制等内容。有些…

iPhone手机小技巧:使用备忘录创建清单

手机备忘录是非常常用的软件之一,无论是iPhone手机还是安卓系统的手机都可以下载相应的APP进行使用。它可以帮助我们记录很多琐碎的事情,防止我们遗忘某事。 在记备忘录的时候,有的人是直接打字记录的,也没有什么具体的格式&…

Excel–如何区分大小写、精确匹配查找?

最近经常需要用到uuid来匹配数据,经常会遇到两个uuid 只是大小写的区别,数据库里使用是没问题的,因为mysql是可以区分大小写的,但是导出后通过excel处理数据匹配数据时就会出问题 如下图所示,通过vlookup匹配&#xf…

文心一言 VS chatgpt (3)-- 算法导论2.1

一、以图 2-2 为模型,说明INSERTION-SORT 在数组 A(31,41,59,26,41,58)上的执行过程。 文心一言: 以图 2-2 为模型,说明INSERTION-SORT 在数组 A(31,41,59&…

Java基础学习第二十四讲:Stream流

Stream流 一、什么是Stream流 Stream流操作是Java 8提供一个重要新特性,它允许开发人员以声明性方式处理集合,其核心类库主要改进了对集合类的 API和新增Stream操作。Stream类中每一个方法都对应集合上的一种操作。将真正的函数式编程引入到Java中&…

ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试

ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试gazebo仿真测试gazebo仿真测试 启动gazebo并加载无人机模型 $ roslaunch rotors_gazebo mav.launch mav_name:firefly启动 linear mpc 控制器 $ roslaunch mav_linear_mpc ma…

Win10安装MySql1.5.7

1)、下载安装包 地址:MySQL :: Download MySQL Community Server 或者: 链接:https://pan.baidu.com/s/1iSLiUo8ehqP6tfxGJ2ewfA 提取码:ctbr 2)、下载后解压到指定目录 我的是D:\Program Files\mysql-…

SCS【19】单细胞自动注释细胞类型 (Symphony)

单细胞生信分析教程桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程,目前整理出来的相关教程目录如下:Topic 6. 克隆进化之 CanopyTopic 7. 克隆进化之 CardelinoTopic 8. 克隆进化之 RobustCloneSCS【1】今天开启单细胞之旅,述说单…

一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理笔记(大全)摘要模块图类关系图模块全展开【bz2】统计常量int模块4 io5 os6 warnings7 _compre…

数据结构与算法基础(王卓)(23):邻接表(链式存储结构)

顶点结点: //顶点的结点结构 typedef struct VNode {VertexType data; //顶点信息ArcNode* firstarc; //指向第一条依附该顶点的边的指针 }VNode, AdjList[MVNum]; //例如:VNode v[MVNum] 相当于 AdjList v 我觉得也可以改成这样写(存疑&…

基于数字孪生智慧污水厂Web3D可视化管理系统

城市水环境不仅关系到国民生活的质量,还对我国社会发展有着深入的影响。城市污水处理厂的存在不仅能够提升生态环保工作发挥的效用,还能够向城市居民宣传生态环保的重要性,使得更多的市民认识到节约、环保的意义,能够从自身出发&a…

UVM学习笔记2——验证基础知识(验证计划、验证方法)

文章目录前言一、覆盖率二、验证计划1、验证计划模板2、验证计划评估三、验证方法1、动态仿真/dynamic simulation2、静态检查/formal check3、虚拟模型4、硬件加速/hardware acceleration5、效能验证6、性能验证四、验证分类1、验证工具2、验证复杂度/可见度/透明度3、验证的芯…

Java设计模式(一)单例模式

设计模式是对软件设计中普遍存在的各种问题,提出解决方案 设计模式包含了面向对象的精髓,懂了设计模式,你就懂了面向对象分析和设计的精要。 设计模式的七大原则 1.单一职责原则 2.接口隔离原则 3.依赖倒置原则 4.里氏替换原则 5.开闭原则o…

大数据项目实战之数据仓库:用户行为采集平台——第2章 项目需求及架构设计

第2章 项目需求及架构设计 2.1 项目需求分析 1)采集平台 (1)用户行为数据采集平台搭建 (2)业务数据采集平台搭建 2)离线需求 主题 子主题 指标 流量主题 各渠道流量统计 当日各渠道独立…