1.字面值匹配
默认区分大小写:phone -> $0=phone
原样匹配:\Q . ^ $ + ? | ( ) [ - ]{ } \E
转义:\. [.] [\b]退格符
匹配修饰符(?x)(pattern): g全局,i:忽略大小写,m:多行,s:单行
2.字符集与简写(大写取反)
\d: [0-9] \w: [_a-zA-Z0-9] \s: [ \t\n\r]
3.数量词
?: 0或1个 {m,n}: m-n个
*: 0或多个 +: 1或多个
4.断言边界
^...$: 一行开始和结束
\b: 零宽度单词边界
\A: 匹配文件头
\Z: 匹配文件尾(\n之前)
\z: 匹配文件尾(EOF)
5.子模式
(t|T)h(eir|ere|e): $0=their; $1=t ; $2=eir $2依赖$1
6.分组
捕获分组(pattern):\u\l(\U\L)使其后紧跟的串首字(全部)转大小写
直接引用(...)(...):$1 $2
命名引用(?<name>...):\k<name>或\g{one}
非捕获分组(?:pattern)或者(?修饰符:pattern),因为不保存分组,可以提高速度
原子分组(?>pattern),不捕获且不回溯,提高性能
7.字符集
0-99的偶数:(?>\b[02468]\b)|(?>\b[123456789][02468]\b)
集取反:(?i)[^aeiou] ,特别的,在Java中可以对字符集进行像集合一样的计算
8.匹配Unicode
\u00e9或\x{00e9} --十六进制
\u351或\351 --八进制
\cX控制符(x值有表)
\p{x}unicode属性(x值有表)
9.量词
贪心:尽可能匹配更多的内容(失败就回溯) {m,n}默认贪心n个
懒惰:从左到右只要匹配成功,马上停止 5*?,匹配0个5,即量词后加?号
占有:只匹配一次(一次尝试匹配所有内容,所有内容尽量多,但不会回溯) {m,n}+,先尝试n个
10.环视
前瞻:a(?=b) 找到所有后面跟b的a -- a(?!b)
后顾:(?<=a)b 找到所有前面有a的b -- (a<!a)b
【正则】正则表达式(0)
最新推荐文章于 2023-04-20 13:57:32 发布