基本匹配: 直接输入,全字匹配
. 匹配任何字符
字符集 [] 匹配方括号内的任意字符
否定字符集 [^] 方括号内的字符不匹配
字母范围 [a-h] 匹配范围内的字母,左右都是闭合的
数字范围 [a-h] 匹配范围内的数字,左右都是闭合的
* 字符和星号在一起,表示字符出现0次或者多次,比如a*表示字符a出现0次或者多次
+ 字符和+号在一起,表示字符出现1次或者多次,比如a+表示字符a出现1次或者多次
? 字符和?号在一起,表示字符出现0次或1次,比如a?表示字符a出现0次或者1次
{} 表示指定字符出现的次数,a{2}表示匹配出现两次的a
{n,} 表示指定字符至少出现的次数,a{2,}表示匹配至少出现两次的a
{n,m} 表示指定字符出现的次数的范围,a{2,4}表示匹配出现2到4词的a字符,包含2和4
[[../../../../../1.收集箱/simpread_clipper/repo/1-python正则表达式精讲–分组 - 知乎|正则表达式-分组–知乎]]
()构成分组,这样方便提取
(ha)-\1,(haa)-\2 1和2表示分组的顺序
(?: ) 非捕获分组(匿名分组),也就是不被捕获,
| 竖线允许一个表达式包含多个不同的分支,所有分支用|分隔。
\ 转义字符,用来转义 { } [ ] / \ + * . $^ | ?
^ 插入符号。在表达式前面加上这个符号,表示匹配表达式的开始
$ 结束符。在表达式后面加上这个符号,表示匹配表达式的结尾
\w 匹配 字母、数字和下划线
\W 匹配除了 字母、数字和下划线 之外的所有东西
\d 匹配 数字
\D 匹配 非数字
\s 匹配空白字符
\S 匹配非空白字符
我们希望正在写的词语出现在另一个词语之前或之后
(?=) 正向先行断言,\d+(?=PM)表示匹配数字,数字后面有PM
(?!) 负向先行断言,\d+(?!PM)表示匹配数字,数字后面没有PM字母
(?<=) 正向后行断言,(?<=\$)\d+ 表示匹配数字,数字前面是$符号
(?<!) 负向后行断言,(?<!\$)\d+ 表示匹配数字,数字前面不是$符号
全局标志,选中所有匹配项目 /\w+\.com/g
多行标志,单独处理每一行/\w+\.com/m
忽略大小写标志,大小写不再敏感 /\w+\.com/i
可以叠加
/\w+\.com/gmi
.* 贪心匹配,匹配满足条件的最长的字符串,比如.*r是匹配以r结尾的最长子串
.*? 懒惰匹配,匹配满足条件的最短的字符串,比如.*?r是匹配以r结尾的最短子串
匹配java的行内注释
1 | 目标:/*asdasd*/ |
匹配空行
1 | ^(\\t)*$\\n tab构成的空行 |
#正则表达式
1 | ((\d{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3})(((0[13578]|1[02])(0[1-9]|[12]\d|3[01]))|((0[469]|11)(0[1-9]|[12]\d|30))|(02(0[1-9]|[1]\d|2[0-8]))))|(((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229) |
举例:
1 | ((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)) |
注意:连字符中间不能有空格
举例:
1 | ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]) |
举例:
注意:冒号是英文的
1 | ([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9]) |
举例:
1 | ([0-1]?[0-9]|2[0-3])-([0-5][0-9])-([0-5][0-9]) |
举例:
1 | ((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9]) |
1 | ((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]) |