字符 | 描述 | 示例 | 示例匹配的字符串 (红色表示能匹配的) |
---|---|---|---|
+ | 前面的匹配一次或多次 会尽量多匹配 |
1+ | 111111 |
. | 除了换行都可以匹配 | .+ | 123456 |
? | 前面的匹配零次或一次 | 1?23 | 123 23 |
* | 前面的匹配零次或多次 会尽量多匹配 |
1*23 | 11111123 23 |
{n} | 前面的匹配n次 | 1{3} | 111111 |
{n,} | 前面的匹配n次或多于n次 会尽量多匹配 |
1{2,} | 11 111111 |
{n,m} | 前面的至少匹配n次或至多匹配m次 会尽量多匹配 |
1{2,4} | 11 111111 |
[xyz] | 字符“堆”,“堆”里的都内匹配 | [1c2a3]+ | 467123a121c313214b5487 |
[n-m] | 表示范围: 1、[0-9]可以匹配0-9的所有数字 2、[a-z]可以匹配所有小写字母 3、[A-Z]可以匹配所有大写字母 |
[4-9]+ | 0124579548612 |
[^mn] | 匹配除字符“堆”的任意字符 | [^47] | 4O74Y74L74J7(注)此处匹配了4次 |
\n | 匹配换行 | \n | 10 20 |
\b | 规定单词边界 | abc\b | abc abcde(注)此处无法匹配 |
\d | 等价于[0-9] | \d+ | 217 |
\w | 等价于[A-Za-z0-9_] | \w+ | 64asdigDR_FIH4saf |
\B | 与\b相反的意义 | abc\B | abc(注)此处无法匹配 abcde |
\u | 匹配Unicode字符 | [\u4e00-\u9fa5]+ | 匹配中文字符 |
\D | 等价于[^0-9] | ||
\W | 等价于[^A-Za-z0-9_] | ||
\s | 匹配空白字符,等价于[\f\n\r\t\v](注)不要问我这些都是什么 | ||
\S | 匹配非空白字符,等价于[^\f\n\r\t\v] | ||
\ | 使下一个字符回归本意 | \.+ | 57........21 |
n|m | “|”两边都能匹配 | a|c | abc(注)此处匹配了2次 |
(xyz) | 捕获字符“堆” 用于输出及零宽断言(后面讲) |
aa(1|2)b | aa1b aa2b |
字符 | 描述 | 示例 | 示例匹配的字符串 (红色表示能匹配的) |
---|---|---|---|
\1 | 把前面“()”内的内容再匹配 “\”后的数字逐渐增加 |
(5434536)([a-z]+)642\1\2 | 5434536abc6425434536abc 5434536abc6425434536ab(注)无法匹配 |
?: | 剥夺引用权 | (?:5434536)([a-z]+)642\1 | 5434536abc642abc |
?<name> \k<name> |
给引用命名 \k用于引用 |
(?<a>5434536)(?[a-z]+)642\k\k<a> | 5434536abc642abc5434536 |