基本语法
正则表达式是由两个//包裹,后面可以加上修饰符(比如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
解决