匹配字符
| |
---|
[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前缀) |
\b(\w+)\b等价于(?<=\W?)(\w+)(?=\W?)