1、背景

正则表达式经常容易遗忘,每次使用的时候拿出来复习一次。
本次是学习B站的,正则表达式视频的笔记记录,方便后续快速回顾和复习,➡️视频地址

2、正则表达式入门

工具网站:
https://regexr-cn.com
https://codejiaonang.com/

2.1 字符集

2.1.1 [] 表示匹配任意的字符

字符集用两个方括号[]表示,为字符的合集,匹配其中的任意的字符。

2.1.2 匹配所有的字母

根据字符集,可以联想到,[abcdefghijklmnopqrstuvwxyz] 就可以小写字母匹配方式

同样也可以使用[a-z]来进行匹配。

其中 - 表示区间的意思。

  • 匹配数字
    使用字符组也可以进行匹配[01234566789]

    同样,也可以用[0-9]进行匹配

  • 匹配特殊字符
    使用反斜杠\特殊字符,来匹配特殊字符,如匹配 - 表示匹配 -

  • 匹配指定范围外
    ^ 符号表示取反,如果查找非字母、非数字的其他字符

2.2 快捷方式

如果要匹配全部数字、全部字符等等需求,如果都使用字符集,写的内容将会非常的多,所以使用快捷方式。
(1)\d 反斜杠d表示所有的数字,即0-9

(2)\w 反斜杠小w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]',其中包含一个下划线。

(3) \s 反斜杠,小s,用于匹配空白字符,匹配任何空白字符,等价于 [ \f\n\r\t\v]

(4)\b 匹配单词的边界
用于匹配单词和空格或者其他字符的内容

  • 快捷方式的取反
    可以用^来进行取反,快捷方式同样提供了一些快捷方式来进行取反的操作,一般用大写字母来表示取反。
    (1)\D用于匹配所有的非数字
    (2)\W用于匹配所有的非字符等价于'[^A-Za-z0-9_]',其中包含一个下划线
    (3)\S用于匹配非空格的所有的字符

2.3 匹配开头和结尾

^ 写到字符集中,表示取反,如果不在字符集中表示匹配以后面的字符开头,$表示以前面字符结尾。
如有一个:python is a programming language, easy to lean python.
(1)匹配开头

(2)匹配结尾

2.4 匹配任意单个字符

可以使用点 . 来匹配除了\n外的任意字符,如果要匹配包括了\n的字符,可以用[.\n]来进行匹配。

2.5 可选字符

表示前面的字符可以出现,也可以不出现

# 任意单个字符,可以出现,也可以不出现
.?

匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。

2.6 重复

2.6.1 重复的次数

在字符后面使用{n},来表示这个字符重复n次。

2.6.2 重复的区间

#### 2.6.3 非贪婪模式 默认匹配的是贪婪模式,使用?表示非贪婪模式 ### 2.7 * 和 + {}在字符串后面,表示重复的次数,如果设置有区间,表示匹配的区间,如果结尾是开区间,表示上限匹配无穷多个。 *表示匹配的区间,为任意个,包括可以没有 +表示匹配的却件,为1到无穷个 ### 2.8 分组 #### 2.8.1分组 使用()可以对匹配到的数据进行分组,返回的数据会进行分组。 #### 2.8.2分组回溯引用 已经分组提取的分组,可以使用分组信息 其中\1是指的匹配第一个分组的信息

2.9 断言

断言的分类有:
1、正向先行断言
2、反向先行断言
3、正向后行断言
4、反向后行断言
断言用于匹配字符符合特定的条件
(?=.?[a-z])(?=.?[A-Z]).+ 这段正则表达式规定了匹配的字符串中必须包含至少一个大写和小写的字母。

2.8.3正向先行断言

正向指的是等于后面字符串,反向是指的不等于后面字符串。

str1(?=str2)
只有str1str2 这样的字符串才能够被匹配上,指的是str1后面必须要有str2
#### 2.8.3反向先行断言 也是从左往后看,并且后面不能出现某个字符。

2.8.4 正向后行断言

匹配 喜欢 这2个字符,要求前面有我,后面有你

正向 : 等于
反向 : 不等于
先行:从左往右看
后行:从右往左看

2.8.4 反向后行断言

喜欢前面没有我,后面没有你

2.10 贪婪和非贪婪

贪婪模式为尽量多的匹配,?为非贪婪,表示匹配到最近的字符

posted on   飞飞fly  阅读(126)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)



点击右上角即可分享
微信分享提示