匹配字符
|
|
[abc] |
匹配a,b,c中的任意一个字符 |
[^abc] |
不匹配a,b,c中的所有字符,“^”只有作为第一个字符出现才有效 |
[a-g] |
匹配a-g范围内的任意一个字符 |
[^a-g] |
不匹配a-g中的所有字符 |
[H-N] |
匹配H-N范围内的任意一个字符 |
[0-9] |
匹配0-9范围内的任意一个字符 |
[a-gH-N] |
匹配a-g,H-N范围内的任意一个字符 |
通配符: |
|
. |
[^\n\r],匹配非换行符 |
\s |
space,空白字符,即换行,制表,空格等字符 |
\S |
[^\s] |
\d |
digit: [0-9] |
\D |
[^\d] |
\w |
word: [0-9A-Za-z_] |
\W |
[^\w] |
匹配组
|
|
(a |
b) |
(…) |
捕获组 |
(?:…) |
非捕获组 |
(?<name>…)或(?'name'…) |
命名捕获组,name可以自定义 |
(?(condition)true_regex |
false_regex) |
group(0)用于获取整个匹配串的匹配结果,group(>0)则可以从整个匹配串的结果中获取子捕获组。
注意:java1.7之后才支持命名捕获组(group方法传入字符串name作为参数),js和python暂时还不支持命名捕获组。
频次范围
|
|
{3} |
前面匹配项出现3次,等价于{3,3} |
{3,6} |
前面的匹配项出现3到6次 |
{3,} |
前面的匹配项至少出现3次 |
{0,6} |
前面的匹配项最多出现6次 |
通配符: |
|
* |
{0,} |
+ |
{1,} |
? |
{0,1} |
\w* |
贪婪模式 |
\w*? |
非贪婪模式 |
定点符
|
|
^ |
字符串开始符 |
$ |
字符串结尾符 |
\b |
boundary,单词边界 |
\B |
非单词边界 |
定点断言 |
|
(?=exp) |
向后肯定断言(exp后缀) |
(?<=exp) |
向前肯定断言(exp前缀) |
(?!exp) |
向后否定断言(没有exp后缀) |
(?<!exp) |
向前否定断言(没有exp前缀) |