正则表达式学习

news/2025/10/3 16:22:48/文章来源:https://www.cnblogs.com/CodeAlchemy/p/19124703

学习正则的网站: https://regexlearn.com/zh-cn/learn/

基础速查: https://regexlearn.com/zh-cn/cheatsheet

1. 限定字符集

符号/模式 描述 示例 解释
. 匹配任意字符(除换行符外) /a.b/ 匹配 "a" 后面跟着的一个任意字符,再跟 "b"
[] 定义字符集 /b[aeo]r/ 匹配结果 barber birbor bur
[^] 定义否定字符集 /b[^aeo]r/ 匹配结果 bar berbir borbur
[a-z] 匹配小写字母字符(a 到 z) /[a-z]/ 匹配任意一个小写字母
[A-Z] 匹配大写字母字符(A 到 Z) /[A-Z]/ 匹配任意一个大写字母
[0-9] 匹配数字字符(0 到 9) /[0-9]/ 匹配任意一个数字
[\u4e00-\u9fa5] 匹配汉字 /[\u4e00-\u9fa5]/ 匹配任意一个汉字
\d 匹配任何数字(0-9) /\d/ 匹配任意一个数字
\D 匹配任何非数字字符 /\D/ 匹配任何非数字字符
\w 匹配任何字母数字或下划线字符 /\w/ 匹配任意一个字母、数字或下划线
\W 匹配任何非字母数字或下划线字符 /\W/ 匹配任何非字母数字或下划线字符
\s 匹配任何空白字符(如空格、制表符、换行符等) /\s/ 匹配任意空白字符
\S 匹配任何非空白字符 /\S/ 匹配任何非空白字符
\b 匹配单词边界(如空格、标点等) /\bword\b/ 匹配完整的 "word"

注意: 没有限定出现次数, 则默认都是一次

2. 限定次数

符号 含义 示例 解释
* 匹配零个或多个前面的元素 /ab*c/ 匹配 "ac", "abc", "abbc" 等
+ 匹配一个或多个前面的元素 /ab+c/ 匹配 "abc", "abbc" 等
? 匹配零个或一个前面的元素 /ab?c/ 匹配 "ac" 或 "abc"
{n} 匹配前一个字符恰好出现 n 次 /a{3}/ 匹配 "aaa"
{n,} 匹配前一个字符至少 n 次 /a{2,}/ 匹配 "aa", "aaa", "aaaa", "aaaa", ...
{n,m} 匹配前一个字符至少 n 次,但不超过 m 次 /a{2,4}/ 匹配 "aa", "aaa", "aaaa"

3. 限定位置

符号 含义 示例 解释
^ 匹配字符串开始 /^abc/ 匹配以 "abc" 开头的字符串
$ 匹配字符串结束 /abc$/ 匹配以 "abc" 结尾的字符串

4. 分组和引用

符号 含义 示例 解释
() 捕获分组 /(abc)+/ 匹配一个或多个 "abc" 字符串
\数字 引用, 可以对捕获分组进行引用 /(ha)-\1,(haa)-\2/ 匹配结果 ha-ha,haa-haa
(?:) 非捕获分组, 即该分组无法被引用 /(?:ha)-ha,(haa)-\1/ 匹配结果 ha-ha,haa-haa

5. 转义和选择

符号 含义 示例 解释
| 选择 /(c|r)at|dog/ 匹配结果 cat rat dog
\ 转义字符{ } [ ] / \ + * . $ ^ | ? /(\*|\.)/ 匹配结果 (*) Asterisk.123**

注意: 在字符集[]内部, 只有这些才需要转义 - ^ ] \, 因为其他的字符在字符集中只会被当做普通字符

6. 标志符 ( 修饰符 / 标记 )

标志符 描述 示例
g 全局匹配:查找所有匹配的结果,而不是只匹配第一个。 /a/g在字符串中查找所有 "a" 字符。
i 不区分大小写:匹配时忽略字母的大小写。 /a/i可以匹配 "a" 或 "A"。
m 多行匹配:影响^$的行为,变为匹配每行的开头和结尾。
/^abc/m可以匹配以 "abc" 开头的多行文本。
s 单行模式:影响.的行为,变为允许.匹配换行符。 /a.b/s匹配 "a" 和 "b" 之间有换行符的字符串。
u Unicode 模式:启用 Unicode 匹配,支持 Unicode 字符。 /\u{20AC}/u匹配 Unicode 字符 "€"。

7. 零宽断言

  • 场景: 如果我们希望正在写的词语出现在另一个词语之前或之后,我们需要使用「零宽断言」

  • 正向先行断言: (?=)

    • 说明: 匹配的某个模式后面符合另一个模式
    • 例子: Date: 4 Aug 3PM 匹配文本中的小时值
    • 解析: 为了只匹配后面有 PM 的数值,我们需要在表达式后面使用正向先行断言 (?=),并在括号内的 = 后面添加 PM。
    • 答案: /\d+(?=PM)/ 匹配结果 Date: 4 Aug 3****PM
    • 巧记: ?后面有没有, =
  • 负向先行断言: (?!)

    • 说明: 匹配的某个模式后面不符合另一个模式
    • 例子: Date: 4 Aug 3PM 匹配文本中除小时值以外的数字。
    • 解析: 我们需要在表达式后面使用负向先行断言 (?!),并在括号内的 ! 后面添加 PM,从而只匹配没有 PM 的数值。
    • 答案: /\d+(?!PM)/ 匹配结果 Date: 4 Aug 3PM
    • 巧记: ?后面有没有, !没有
  • 正向后行断言: (?<=)

    • 说明: 匹配的某个模式前面符合另一个模式
    • 例子: Product Code: 1064 Price: $5 匹配文本中的金额数。
    • 解析: 为了只匹配前面带有 $ 的数字。我们要在表达式前面使用正向后行断言 (?<=),并在括号内的 = 后面添加 $。
    • 答案: /(?<=\$)\d+/ 匹配结果 Product Code: 1064 Price: $5**
    • 巧记: ?<前面有没有, =
  • 负向后行断言: (?<!)

    • 说明: 匹配的某个模式前面不符合另一个模式
    • 例子: Product Code: 1064 Price: $5 匹配文本中除价格外的数字。
    • 解析: 为了只匹配前面没有 $ 的数字,我们要在表达式前用负向后行断言 (?<!),并在括号内的 ! 后面添加 $。
    • 答案: /(?<!\$)\d+/ 匹配结果 Product Code: 1064 Price: $5
    • 巧记: ?<前面有没有, !没有
  • 注意:

    • 断言不会消耗字符 !!!

8. 匹配模式

  • 贪婪匹配

    • 说明: 使用*, +, ?,{n, m}默认就是贪婪模式
    • 特点: 尽可能多地匹配字符,直到整个表达式不再匹配为止。
    • 例子: /.*r/ 匹配结果 ber beer beeer beeeer
  • 懒惰匹配

    • 说明: 在*, +, ?, {n, m}后面加?就会变成懒惰模式, 如 *?, +?, ??, {n, m}?
    • 特点: 懒惰匹配在第一次匹配成功时停止
    • 例子: /.*?r/ 匹配结果 ber beer beeer beeeer

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

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

相关文章

神经网络之简单的标量何以表达模型的拟合能力 - 指南

神经网络之简单的标量何以表达模型的拟合能力 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

一篇文章入门RabbitMQ:基本概念与Java利用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

软件开发 网页设计网站如何更改网站的关键词

一、xlutils是什么是一个提供了许多操作修改excel文件方法的库&#xff1b;属于python的第三方模块xlrd库用于读取excel文件中的数据&#xff0c;xlwt库用于将数据写入excel文件&#xff0c;修改用xlutils模块&#xff1b;xlutils库也仅仅是通过复制一个副本进行操作后保存一个…

PHP程序员要是基础不扎实,越学越吃力

PHP程序员要是基础不扎实,越学越吃力2025-10-03 16:17 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…

wap网站开发兰州百姓网免费发布信息网站

Ubuntu下文件/目录对比的软件Meld可能有很多用户还不是很熟悉&#xff0c;下文就给大家介绍如何安装Meld和移植到Gedit下。具体内容如下所述。 Meld允许用户查看文件、目录间的变化。很容易移植到Gedit下&#xff0c;方便用户使用。 安装Meld Meld默认在Ubuntu官方源中&#…

深入解析:[特殊字符]函数指针:C语言的动态灵魂,嵌入式的超能力(202589)

深入解析:[特殊字符]函数指针:C语言的动态灵魂,嵌入式的超能力(202589)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…

酒类产品网站设计做海外购网站

上博士为了毕业写学术论文头都大了&#xff0c;但更难受的是英语不咋地&#xff0c;投稿后经常会因为语言问题而惨遭拒稿&#xff0c;每每想起就令人心情郁郁&#xff0c;天台可期。有些审稿人也会直接告知需要专业的修改&#xff0c;那咋整呢&#xff0c;让润色呗&#xff0c;…

网站可以做二维码吗哈尔滨最大的互联网公司

相信很多电脑用户都知道&#xff0c;电脑系统在运行的时候会产生系统日志&#xff0c;它可以记录系统中的硬件、软件和系统的各种问题信息&#xff0c;可以通过它检索错误发生的原因&#xff0c;不过时间长了&#xff0c;这类日志文件就会积压&#xff0c;导致系统存储变小&…

lesson70:jQuery Ajax完全指南:从基础到4.0新特性及现代替代优秀的方案引言:jQuery Ajax的时代价值与演进

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

《电路基础》第八章学习笔记

《电路基础》第八章学习笔记本章学习二阶电路,典型是RLC电路。电路中包含三种无源元件(两种储能元件)。可以用二阶微分方程表征其特性。初值与终值的确定关键点:分析电路时,必须始终仔细地处理电容器两端电压v(t)…

《电路基础》第七章学习笔记

《电路基础》第七章学习笔记本章主要介绍一阶电路,需要用到一阶微分方程来表征无源RC电路形成: 一个电阻器与一个已充电电容器组成的串联电路,当直流电源突然断开时,就会得到无源RC电路。由这个图,我们对顶点使用…

XGBoost

XGBoostXGBoost的算法原理 ​ 设选择了使用$k$个Tree来拟合数据,XGBoost的原理是使用第一颗树来拟合原始数据,得到$\hat y_1$,然后用$\hat y_1$替换原来的$y$,再用第二颗树来拟合数据。最终的预测结果是每个数的预…

LLM大模型:deepseek sparse attention是个啥?

1、近期,deepseek-3.2-EXP发布,价格大幅下降,如下:价格大幅下降,这是谁给的底气了?必定是成本大幅下降呗,否则不得亏死?那么问题又来了:成本又是怎么大幅下降的了?2、时至今日,尽管被各种吐槽(其中不乏yan…

做公司网站需要制作内容济宁网站开发公司

有时候被ZABBIX监控的主机可能需要关机重启等维护操作,为了在此期间不触发告警,需要创建主机的维护任务,以免出现误告警 ZABBIX本身有这个API可供调用(不同版本细节略有不同,本次用的ZABBIX6.*),实现批量化建立主机的维护任务 无论哪种方式(IP列表,主机描述,或IP子网)创建维护…

如何更换网站图片wordpress 设置图片大小

11.2.0.3数据库环境&#xff0c;使用rman进行归档日志备份&#xff0c;想实现&#xff1a; (1)每天备份归档日志&#xff0c;备份完并不删除归档日志 (2)归档日志备份成功一次之后&#xff0c;下次再备份的时候rman就自动不会再次备份这个归档日志 这个需求可以通过 backup …

北京专业网站翻译影音字幕翻译速记速记快而高效公司网站的seo优化怎么做

2019独角兽企业重金招聘Python工程师标准>>> 快捷菜单 当用户点击界面上某个元素超过2秒后&#xff0c;将启动注册到该界面的快捷菜单。 步骤&#xff1a; 1.代码动态生成菜单 final static int CONTEXT_MENU_1 Menu.FIRST;final static int CONTEXT_MENU_2 Menu…

vs做网站怎样添加图片普通网站报价多少

用过小米miui的用户都知道&#xff0c;miui的“文件管理”里边有一个非常好用的功能-远程管理&#xff0c;如果手机与电脑都在同一个wifi网络下&#xff0c;即同一个局域网内&#xff0c;不用数据线直接就可以连接。打开手机的文件管理—远程管理—启动服务&#xff0c;将生成一…

一个公司可以做两个网站推广吗分类信息网站织梦模板

缩小包围圈游戏其实是一个不可能完成的任务&#xff0c;但是它会给游戏者带来无尽欢笑&#xff0c;使小组充满活力&#xff0c;让队员们能够自然地进行身体接触和配合&#xff0c;消除害羞和忸怩感&#xff0c;创造融洽的气氛&#xff0c;为后续工作的开展奠定良好基础。可以作…

详细介绍:从零到一:Docker Compose 轻松部署微服务实战!

详细介绍:从零到一:Docker Compose 轻松部署微服务实战!2025-10-03 15:59 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

软著申请全流程材料模板,2025年最新模板汇总! - 实践

软著申请全流程材料模板,2025年最新模板汇总! - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…