26、正则表达式

news2025/1/24 2:44:16

目录

一. 匹配字符

.:匹配除换行符外的任意单个字符。

二. 位置锚点

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

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

\b:匹配单词边界。

\B:匹配非单词边界。

三. 重复限定符

*:匹配前面的字符或子表达式零次或多次(贪婪模式)。

+:匹配前面的字符或子表达式一次或多次(贪婪模式)。

?:匹配前面的字符或子表达式零次或一次(懒惰模式)。

{n}:匹配前面的字符或子表达式恰好n次。

{n,}:匹配前面的字符或子表达式至少n次。

{n,m}:匹配前面的字符或子表达式至少n次,但不超过m次。

四. 分支条件

|:逻辑“或”,匹配两个或多个选项中的一个。

五. 字符类

[abc]:匹配方括号内的任意一个字符。

[^abc]:匹配不在方括号内的任意一个字符。

\d:匹配任何数字字符。

\D:匹配任何非数字字符。

\s:匹配任何空白字符。

\S:匹配任何非空白字符。

\w:匹配任何字母数字字符及下划线。

\W:匹配任何非字母数字字符及非下划线。

六. 转义字符

\:转义字符,用于匹配元字符本身或特殊序列。

七. 特殊序列

\t:匹配制表符(Tab)。

\n:匹配换行符。

\r:匹配回车符。

\f:匹配换页符。

\v:匹配垂直制表符。

八. 分组和引用

():创建捕获组,用于分组和提取匹配的文本。

(?:...):创建非捕获组,用于分组但不捕获匹配的文本。

\数字:后向引用,引用之前捕获组匹配的文本。配合捕获组使用

九. 断言

(?=...):正向先行断言,匹配后面跟着特定模式的字符串。

(?!...):负向先行断言,匹配后面不跟着特定模式的字符串。

(?<=...):正向后行断言,匹配前面有特定模式的字符串。

(?

十. Unicode 和其他属性

十一. 递归

十二.重复模式


        正则表达式(Regular Expression,简称Regex)是一种用于字符串搜索和操作的强大工具,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。它是一套独立的规范,各类编程语言都会提供一些API,支持正则表达式。正则表达式由普通字符(例如,a-z、A-Z、0-9)和特殊字符(称为“元字符”)组成。以下是一些常用的元字符及其含义:

当然,以下是正则表达式元字符和特性的分类,每个都附有一个简单的案例和清晰的输出格式说明:

一. 匹配字符

.:匹配除换行符外的任意单个字符。

示例a.t 匹配 "act"、"a1t" 或 "a!t"。

二. 位置锚点

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

示例^Hello 匹配以 "Hello" 开头的句子。

  • $:匹配输入字符串的结束位置。

示例World$ 匹配以 "World" 结尾的句子。

\b:匹配单词边界。

示例\bworld  这个正则表达式匹配的是 "world" 作为一个完整单词出现的情况

  • \B:匹配非单词边界。

示例\Bworld \B 匹配 "helloworld" 中的 "world"。

三. 重复限定符

*:匹配前面的字符或子表达式零次或多次(贪婪模式)。

示例a* 匹配 "a"、"aa" 或 "aaa"。

+:匹配前面的字符或子表达式一次或多次(贪婪模式)。

示例a+ 匹配 "a"、"aa" 或 "aaa",但不匹配空字符串。

?:匹配前面的字符或子表达式零次或一次(懒惰模式)。

示例a? 匹配 "a" 或空字符串。

{n}:匹配前面的字符或子表达式恰好n次。

示例a{3} 匹配 "aaa"。

{n,}:匹配前面的字符或子表达式至少n次。

示例a{3,} 匹配 "aaa"、"aaaa" 或 "aaaaa"。

{n,m}:匹配前面的字符或子表达式至少n次,但不超过m次。

示例a{2,3} 匹配 "aa" 或 "aaa"。

四. 分支条件

|:逻辑“或”,匹配两个或多个选项中的一个。

示例cat|dog 匹配 "I have a cat" 或 "I have a dog"。

五. 字符类

[abc]:匹配方括号内的任意一个字符。

示例[abc] 匹配 "a"、"b" 或 "c"。

[^abc]:匹配不在方括号内的任意一个字符。

示例[^abc] 匹配 "d"、"e" 或 "f"。

\d:匹配任何数字字符。

示例\d 匹配 "1"、"2" 或 "3"。

\D:匹配任何非数字字符。

示例\D 匹配 "a"、"b" 或 "c"。

\s:匹配任何空白字符。

示例\s 匹配空格、制表符或换行符。

\S:匹配任何非空白字符。

示例\S 匹配 英文字母。

  • \w:匹配任何字母数字字符及下划线。

示例\w 匹配 "a"、"1" 或 "_"。

  • \W:匹配任何非字母数字字符及非下划线。

示例\W 匹配空格或 "!"。

六. 转义字符

\:转义字符,用于匹配元字符本身或特殊序列。

示例\. 匹配实际的点字符。

七. 特殊序列

\t:匹配制表符(Tab)。

示例\t 匹配制表符。

\n:匹配换行符。

示例\n 匹配换行符。

\r:匹配回车符。

示例\r 匹配回车符。(回车符:将光标移回行首,不换行。换行符:将光标移至下一行开头,换行。)

Windows回车换行符都是enter键,单独敲出太麻烦,算了

\f:匹配换页符。

示例\f 匹配换页符。

通常用于打印机或文本处理软件中,以指示开始新的一页。在大多数文本编辑器或命令行界面中,换页符不是通过键盘直接输入的。没法演示。

\v:匹配垂直制表符。

示例\v 匹配垂直制表符。

垂直制表符通常不通过键盘直接输入,因为它主要用于老式的电传打字机和一些特殊的文本处理场景。

八. 分组和引用

():创建捕获组,用于分组和提取匹配的文本。

示例(abc) 匹配 "abc" 并捕获它。

(?:...):创建非捕获组,用于分组但不捕获匹配的文本。

示例(?:abc) 匹配 "abc" 但不捕获它。

说明:在正则表达式中使用它来对子表达式进行分组,但是不捕获匹配的结果。这意味着匹配到的内容不会像捕获组那样被存储起来,以便后续使用。

\数字:后向引用,引用之前捕获组匹配的文本。配合捕获组使用

示例(abc)\1 匹配 "abcabc"。匹配文本 abc 出现两次,并且中间没有任何其他符号。

九. 断言

(?=...):正向先行断言,匹配后面跟着特定模式的字符串。

示例abc(?=def) 匹配 "abc" 后面跟着 "def"。

(?!...):负向先行断言,匹配后面不跟着特定模式的字符串。

示例abc(?!def) 匹配 "abc" 后面不跟着 "def"。

  • (?<=...):正向后行断言,匹配前面有特定模式的字符串。

示例(?<=def)abc 匹配 "abc" 前面有 "def"。

(?<!...):负向后行断言,匹配前面没有特定模式的字符串。

示例(?<!def)abc 匹配 "abc" 前面没有 "def"。

十. Unicode 和其他属性

  • \p{...}:匹配具有特定 Unicode 属性的字符。

示例\p{L} 匹配任何字母

很多正则表达式引擎不支持 Unicode 属性转义或没有启用Unicode模式,暂时没测试。

十一. 递归

  • (?R):递归匹配,正则表达式可以引用自身。

示例(?R) 可以递归地匹配重复的模式。

正则表达式引擎不支持递归模式,暂时没测试。

十二.重复模式

  • 贪婪模式:对于重复限定符,默认情况下会匹配尽可能多的字符,这叫做贪婪模式。

  • 懒惰模式:在重复限定符之后加上 ?,表示匹配尽可能少的字符,这叫做懒惰模式。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8S中Service详解(一)

Service介绍 在Kubernetes中&#xff0c;Service资源解决了Pod IP地址不固定的问题&#xff0c;提供了一种更稳定和可靠的服务访问方式。以下是Service的一些关键特性和工作原理&#xff1a; Service的稳定性&#xff1a;由于Pod可能会因为故障、重启或扩容而获得新的IP地址&a…

【真机调试】前端开发:移动端特殊手机型号有问题,如何在电脑上进行调试?

目录 前言一、怎么设置成开发者模式&#xff1f;二、真机调试基本步骤&#xff1f; &#x1f680;写在最后 前言 edge浏览器 edge://inspect/#devices 谷歌浏览器&#xff08;开tizi&#xff09; chrome://inspect 一、怎么设置成开发者模式&#xff1f; Android 设备 打开设…

初探大数据流式处理

文章目录 初探大数据流式处理批式处理系统特点流式处理系统特点大批次计算微批次计算适用场景 流式计算的应用场景流式大数据的特征流式计算的关键技术流式处理框架的特征三大流式数据处理框架 初探大数据流式处理 大数据处理系统主要分为批式处理和流式处理两类。批式处理将大…

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开&#xff0c;使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版&#xff0c;仅包含Conda和Python&#xff0c;如果只做深度学习&#xff0c;可使用miniconda。 [注]&#xff1a;Anaconda、Conda与Miniconda Conda&#xff1a;创建和管…

部门管理查询部门,nginx反向代理,前端如何访问到后端Tomcat 注解@RequestParam

接口开发 增删改通常是不用返回data数据&#xff0c;返回null 列表查询-结果封装&#xff0c;时间 前后端联调测试 nginx反向代理&#xff0c;前端如何访问到后端Tomcat服务器 删除部门

PID 控制算法(二):C 语言实现与应用

在本文中&#xff0c;我们将用 C 语言实现一个简单的 PID 控制器&#xff0c;并通过一个示例来演示如何使用 PID 控制算法来调整系统的状态&#xff08;如温度、速度等&#xff09;。同时&#xff0c;我们也会解释每个控制参数如何影响系统的表现。 什么是 PID 控制器&#xf…

AutoSar架构学习笔记

1.AUTOSAR&#xff08;Automotive Open System Architecture&#xff0c;汽车开放系统架构&#xff09;是一个针对汽车行业的软件架构标准&#xff0c;旨在提升汽车电子系统的模块化、可扩展性、可重用性和互操作性。AUTOSAR的目标是为汽车电子控制单元&#xff08;ECU&#xf…

RTMP|RTSP播放器只解码视频关键帧功能探讨

技术背景 我们在做RTMP|RTSP直播播放器的时候&#xff0c;遇到过这样的技术诉求&#xff0c;在一些特定的应用场景中&#xff0c;可能只需要关键帧的信息&#xff0c;例如视频内容分析系统&#xff0c;可能只对关键帧进行分析&#xff0c;以提取特征、检测对象或场景变化。鉴于…

C#防止重复提交

C#防止重复提交 文章目录 C#防止重复提交前言防止重复提交的思路Web API 防止重复提交代码实现代码讲解使用方法 MVC防止重复提交总结 前言 当用户在前端进行提交数据时&#xff0c;如果网络出现卡顿和前端没有给出响应的话顾客通常都会狂点提交按钮&#xff0c;这样就很容易导…

基于深度学习的视觉检测小项目(十五) 用户的登录界面

用户管理离不开的是消息框&#xff08;QMessageBox&#xff09;和对话框&#xff08;QDialog&#xff09;&#xff0c;比如对话框用于用户名和密码输入&#xff0c;消息框用于提示登录成功、密码错误。 • 基础知识&#xff1a;PySide6&#xff08;PyQT5&#xff09;的常用对话…

在 Kubernetes 上快速安装 KubeSphere v4.1.2

目录标题 安装文档配置repo安装使用插件 安装文档 在 Kubernetes 上快速安装 KubeSphere 配置repo export https_proxy10.10.x.x:7890 helm repo add stable https://charts.helm.sh/stable helm repo update安装 helm upgrade --install -n kubesphere-system --create-name…

CPU 缓存基础知识

并发编程首先需要简单了解下现代CPU相关知识。通过一些简单的图&#xff0c;简单的代码&#xff0c;来认识CPU以及一些常见的问题。 目录 CPU存储与缓存的引入常见的三级缓存结构缓存一致性协议MESI协议缓存行 cache line 通过代码实例认识缓存行的重要性 CPU指令的乱序执行通过…

江天科技主要产品销售单价下滑,应收账款、存货周转率大幅下降

《港湾商业观察》廖紫雯 日前&#xff0c;苏州江天包装科技股份有限公司&#xff08;以下简称&#xff1a;江天科技&#xff09;冲击北交所&#xff0c;保荐机构为国投证券。 江天科技主要从事标签印刷产品的研发、生产与销售&#xff0c;公司主要产品包括薄膜类和纸张类的不…

Unity中在UI上画线

在UI中画一条曲线 我封装了一个组件,可以实现基本的画线需求. 效果 按住鼠标左键随手一画. 用起来也很简单,将组件挂到空物体上就行了,红色的背景是Panel. 你可以将该组件理解为一个Image,只不过形状更灵活一些罢了,所以它要放在下面的层级(不然可能会被挡住). 代码 可以…

Cloud Foundry,K8S,Mesos Marathon弹性扩缩容特性对比

一、Cloud Foundry 使用Scaling an Application Using App Autoscaler插件&#xff0c;基于资源使用情况触发简单扩缩容 CPU、内存、Http带宽、延时等 监控这些资源的使用情况决定扩缩容策略&#xff1a;实例是增加还是减少 Instance Limits 限制实例数量范围&#xff0c;定义…

Qt —— 控件属性

一、概述 控件有很多属性&#xff0c;我们学习和整理常见和常用的几个属性&#xff0c;由于所有的控件基本都是继承Widget类的&#xff0c;所以前面会先拿Widget类和常见的控件进行示范。 Qt Designer左侧一长条就是Qt给我们内置好的控件&#xff1a; 二、enabled 状态属性 …

vue+高德API搭建前端Echarts图表页面

利用vue搭建Echarts图表页面&#xff0c;在搭建Echarts图表中&#xff0c;如果搭建地理地形图需要准备一些额外的文件&#xff0c;地理json文件和js文件&#xff0c;js文件目前在网上只能找省一级的&#xff0c;json文件有对应的省市县&#xff0c;js文件和json文件对应的也是不…

Gartner发布2025年网络治理、风险与合规战略路线图

新型网络风险和合规义务&#xff0c;日益成为网络治理、风险与合规实践面临的问题。安全和风险管理领导者可以参考本文&#xff0c;实现从被动、专注于合规的方法到主动、进一步自动化方法的转型。 主要发现 不断变化的监管环境和不断扩大的攻击面&#xff0c;使企业机构难以实…

Redis 集群模式入门

Redis 集群模式入门 一、简介 Redis 有三种集群模式&#xff1a;主从模式、Sentinel 哨兵模式、cluster 分片模式 主从复制&#xff08;Master-Slave Replication&#xff09;: 在这种模式下&#xff0c;数据可以从一个 Redis 实例&#xff08;主节点 Master&#xff09;复…

查看电脑或笔记本CPU的核心数方法及CPU详细信息

一、通过任务管理器查看 1.打开任务管理器 可以按下“Ctrl Shift Esc”组合键&#xff0c;或者按下“Ctrl Alt Delete”组合键后选择“任务管理器”来打开。 2.查看CPU信息 在任务管理器界面中&#xff0c;点击“性能”标签页&#xff0c;找到CPU使用记录区域&#xff0c…