. | 匹配任意字符 | b.t | 可以匹配bat/but/b#t/b1t等 |
\w | 匹配字母,数字和下划线 | b\wt | 可以匹配but/b1t/b_1,但不能匹配b#t |
\s | 匹配空白字符,包括\r,\n,\t | love\syou | 匹配love you |
\d | 匹配数字 | \d\d | 可以匹配01,23等 |
\b | 限定字符串边界 | \bThe\b | 匹配The这个单词,不能匹配There。也就是The的前面和后面只能是空格 |
^ | 根据字符串的开头部分匹配 | ^The | 匹配以The开头的字符串 |
$ | 根据字符串的结束部分匹配 | .exe$ | 匹配以.exe结尾的字符串 |
\W | 匹配非字母,非数字和非下划线 | b\Wt | 可以匹配b#t,b@t等,但不能匹配but/b1t/b_1 |
\S | 匹配非空白字符 | love\Syou | 可以匹配love#you,但不能匹配love you |
\D | 匹配非数字 | \d\D | 可以匹配9$,3#等 |
\B | 与\b相反,匹配的字符串不处于边界 | \Bio\B | 可以匹配biological,因为io的前后都不是空格 |
[] | 匹配字符集(中括号内)里的任意单一字符 | [aeiou] | 匹配a,e,i,o,u这几个元音字符 |
[^] | 匹配不在字符集(中括号内)里的任意单一字符 | [^aeiou] | 匹配除了a,e,i,o,u这几个原因字符以外的字符 |
* | 匹配0次或者多次 | bee* | 匹配be,bee或者beeeeee等 |
+ | 匹配1次或者多次 | bee+ | 匹配bee,beee或者beeeeee等 |
? | 匹配0次或者1次 | bee? | 匹配be或者bee |
{N} | 匹配N次 | be{3} | 匹配beee |
{M,} | 至少匹配M次 | be{3,} | 匹配beee,beeeeeee等 |
{N,M} | 匹配至少M次,至多N次 | be{3,5} | 匹配beee,beeee,beeeee |
| | 分支 | foo|bar | 匹配foo或者bar |
(exp) | 匹配exp并且捕获到自动命名的组中 | | 这里的重点是自动命名的组里,至于如何匹配完全取决于exp如何定义 |
(?exp) | 匹配exp并且捕获到名为name的组中 | | 这里的重点是命名组,至于如何匹配完全取决于exp如何定义 |
(?:exp) | 匹配exp但是不捕获匹配的文本 | | |
(?=exp) | 对exp前面的文本进行匹配 | \b\w+(?=ing) | 匹配I'm reading中的read |
(?<=exp) | 对exp后面的文本进行匹配 | (?<=\bread)\w+\b | 匹配I'm reading中的ing |
*? | 重复任意次,但尽可能少重复 | b\w*?p | bephellobeep会匹配出bep和beep。但是如果正则为b\w*p,那么匹配的结果是bephellobeep |
+? | 重复1次或者多次,但尽可能少重复 | | 原理同上 |
?? | 重复0次或者1次,但尽可能少重复 | | 原理同上 |
{M,N}? | 重复M到N次,但尽可能少重复 | | 原理同上 |
{M,}? | 重复M次以及以上,但尽可能少重复 | | 原理同上 |