1.不匹配字符,只匹配一个位置:它的前一个字符或者后一个字符不全是(一个是,一个不是或不存在)w。
2.s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。
3.w匹配字母或数字或下划线或汉字等。
4..匹配换行符(
)以外的任意字符。
5.d匹配数字。
6.^匹配字符串的开始。
7.$匹配字符串的结束。
8.d{5,10},匹配不少于5,不多于10个数字字符串。
9.|意为或,从左到右匹配分支条件。
10.[]用来自定义范围,-范围符号,
[123],为1,2,3中的一个,
[1-3],1到3,
[a-zA-Z0-9],大小写英文+数字,等同w(如果只考虑英文的话)
11.()标记一个子表达式,默认自动命名(从1开始),在后续表达式中可以引用该子表达式所捕获到的文本:
(w+)s+1 可以匹配 go go, kitty kitty等, (w+)表达式被自动命名为1被后文引用:1
自定义命名,用(?<name>exp)或(?'name'exp),引用方式用k<name>或k'name':
(?<love>w+)s+k<love>
(?'love'w+)s+k'love'
不捕获文本,也不自动命名分组:
(?:exp)
用专业术语来说,这个叫做分组以及后向引用,哈哈哈。。
12.(?=exp) w+(?=ing)匹配以ing结尾的单词的前面部分(除了ing以外的部分)
(?<=exp) (?<=start)w+匹配以start开头的单词的后半部分(除了start以外的部分)
13.q(?!d)匹配q后面不跟着一个数字,并且不消费字符,后续的匹配从q后第二个字符开始
而^d则会消费字符,后续的匹配从q后第一个字符开始
14.单行模式匹配只是更改.的含义,使它与每一个字符匹配(包括换行符
)
多行模式则是更改^和$的含义,使它们分别在任意一行的行首和行尾匹配(不再是整个字符串的开头和结尾)
名字让人疑惑,但其实两种模式可以同时开启。