普通字符(最基础)
| 符号 |
含义 |
示例 |
a~z |
字母本身 |
abc 匹配 “abc” |
0~9 |
数字本身 |
123 匹配 “123” |
| 其他符号 |
除特殊字符外,其它字符本身 |
@#- 匹配这些字符 |
元字符(具有特殊意义)
| 符号 |
含义 |
示例 |
. |
任意单个字符(除换行) |
a.c 匹配 abc、a1c |
^ |
匹配字符串开头 |
^abc 匹配以 abc 开头 |
| $$` |
匹配字符串结尾 |
abc$$ 匹配以abc` 结尾 |
[] |
字符集,匹配其中任一字符 |
[abc] 匹配 a、b、c |
[^] |
排除字符集,匹配不在其中的字符 |
[^abc] 匹配非 a、b、c 的字符 |
| `\ |
` |
或操作,匹配左右任一模式 |
`a\ |
b匹配a或b` |
() |
分组,可用于提取或重复 |
(abc)+ 匹配 “abcabc” |
\ |
转义字符,用于匹配特殊符号本身 |
\. 匹配字面上的点号 . |
数量词(表示重复次数)
| 符号 |
含义 |
示例 |
* |
匹配前一项 0次或多次 |
a* 可匹配 “”, “a”, “aaa” |
+ |
匹配前一项 1次或多次 |
a+ 匹配 “a”, “aa” 等 |
? |
匹配前一项 0次或1次 |
a? 匹配 “” 或 “a” |
{n} |
匹配前一项 恰好 n 次 |
a{3} 匹配 “aaa” |
{n,} |
匹配前一项 至少 n 次 |
a{2,} 匹配 “aa”, “aaa”, … |
{n,m} |
匹配前一项 n 到 m 次之间 |
a{1,3} 匹配 “a”, “aa”, “aaa” |
懒惰匹配(非贪婪)
默认所有数量词都是贪婪的(尽量多匹配),加上 ? 变成非贪婪(尽量少匹配)
| 符号 |
含义 |
示例 |
*? |
0次以上,尽可能少匹配 |
<.*?> 匹配 <h1> 而非整个标签组 |
+? |
1次以上,尽可能少匹配 |
".+?" 匹配最短一对引号之间内容 |
?? |
0或1次,尽可能少匹配 |
a?? 有也匹配,无也匹配(偏向少) |
{n,m}? |
n到m次,尽可能少 |
a{2,5}? 匹配2~5个a,越少越好 |
定位符(锚点)
| 符号 |
位置匹配作用 |
示例 |
^ |
匹配字符串开头 |
^abc 只匹配 “abc” 出现在开头 |
| $$` |
匹配字符串结尾 |
`abc$$ 只匹配 “abc” 出现在末尾 |
\b |
单词边界(前后是非\w) |
\bword\b 匹配整个单词 |
\B |
非单词边界 |
\Bword\B 匹配“词中”的 word |
转义字符(特殊含义字符)
| 符号 |
含义 |
等价于 |
\d |
匹配数字(0-9) |
[0-9] |
\D |
匹配非数字 |
[^0-9] |
\w |
匹配单词字符(字母、数字、下划线) |
[a-zA-Z0-9_] |
\W |
匹配非单词字符 |
[^a-zA-Z0-9_] |
\s |
匹配空白字符(空格、Tab、换行等) |
[ \t\r\n\f] |
\S |
匹配非空白字符 |
[^ \t\r\n\f] |
\\ |
匹配反斜线 \ |
- |
\. |
匹配点号 . 本身 |
- |
其他语法(进阶)
| 语法 |
含义 |
示例 |
(?:...) |
非捕获分组(不参与 group 提取) |
(?:abc)+ |
(?=...) |
正向肯定预查(匹配后面是) |
a(?=b) 匹配 “a” 若后是 “b” |
(?!...) |
正向否定预查(匹配后面不是) |
a(?!b) 匹配 “a” 若后不是 “b” |
(?<=...) |
反向肯定预查(匹配前面是) |
(?<=a)b 匹配 “b” 若前是 “a” |
(?<!...) |
反向否定预查(匹配前面不是) |
(?<!a)b 匹配 “b” 若前不是 “a” |