Administrator
发布于 2025-03-31 / 7 阅读
0
0

正则表达式

正则表达式在线网站

基本语法

正则表达式是由两个//包裹,后面可以加上修饰符(比如g表示全局匹配,i表示忽略大小写,m表示多行匹配)

表达式中输入对应的字符会高亮显示

.可代表代表除换行符外任意字符

[]方括号表示字符的集合

方括号里面也可以加一个尖角号^取反(只在方括号内表示取反),使用时一定注意优先级

但是每次都用方括号匹配一系列字符显得繁琐,所以正则表达式中有一系列预定义字符类,来匹配常用的字符

\d 表示数字,作用与[0-9]相同

\D 表示非数字

\w 表示字母数字或者下划线

\W

\s 表示空白字符,如空格Tab等

\S 表示非空白字符

位置和边界匹配

^在方括号外部表示匹配每一行的开头

这里的匹配规则我也不是特别清楚,放几个图片举例子 这里写笔记时还没理解修饰符

$表示匹配每一行的结尾

比如我们这里想找到每一句的结尾(一般句号.表示句子结束),

因为.在正则表达式中表示任意字符,所以匹配的不只是结尾的句号,此时我们可以用\转义符

^$混合使用,我们就可以匹配只有特定字符的行

\b表示单词的边界

如果想要匹配单词开头的in,那就在in前面加上\b;如果想要匹配单词结尾的in,那就在in后面加上\b;想匹配独立的in这个单词,那前后都加\b

量词

+表示前面的字符重复一次或者多次

*表示前面的字符重复了0次或者多次

?表示前面的字符重复了0次或者1次

{}花括号内加数字表示重复的次数,还可以输入两个数字逗号隔开表示一个范围

分组和引用

()小括号可以把多个字符当成一个整体来处理

|竖线表示或者

所以, ( | ) == [ ]

分组还有一个特别重要的内容就是捕获和替换

比如我们需要统计日期(年月日)

如果现在我们想把日期格式改成月日年,我们只需要创建三个分组,然后调换即可

其中$1,2,3代表了三个分组.

在正则表达式中\数字表示第几个分组

现在讨论一下更复杂的情况,实际工作中日期的格式不止一种,我们需要统一

分组但不捕获

有时候我们只想要分组的功能,但是并不需要捕获,此时可以在前小括号加?:来表示非捕获分组

前瞻和后顾

只匹配某个字符前或后的字符而不匹配这个字符本身

1.正向前瞻,前小括号后加?=

2.负向前瞻,前小括号后加?!

3.正向后顾,前小括号后加?< =

4.负向后顾,前小括号后加?<!

但是$100的00也被匹配到了,以为00前面是数字,可以用\b解决



评论