基本符号
符号 | 描述 | 实例 |
---|---|---|
literal |
匹配literal
|
foo |
re1lre2 |
匹配re1 或re2
|
foolbar |
. |
匹配除\n 之外的任意字符 |
a.b |
* |
匹配0个或更多个 | a* |
+ |
匹配1个或更多个 | a+ |
? |
匹配0或1个 | a? |
^ |
匹配开头 | ^abc |
$ |
匹配结尾 | xyz$ |
{N} |
匹配N次 | a{N} |
{M,N} |
匹配M至N次 | a{M,N} |
[...] |
匹配其中之一 | [abc] |
[...a-z...] |
匹配a到z之间的一个 |
[0-9] , [a-zA-Z]
|
[^char] |
^ 在[] 中表示不匹配其中的字符 |
[^abc] |
(*l+l{}l?)? |
把含有*, +, {}, ?的匹配转换成非贪婪式 | a*? |
(...) |
匹配括号内的表达式并保存为子组 | (abc) |
注:re1lre2
以及(*l+l{}l?)?
中的l代表竖线“|”或的意思。
特殊字符
符号 | 描述 | 实例 |
---|---|---|
\c |
转义 | \* |
\d |
表示数字,即[0-9]
|
\d+ |
\w |
代表字母数字及下划线,即[a-zA-Z0-9_]
|
\w* |
\s |
代表非显示字符,即[\n\t\f\r\v]
|
a\fb |
\b |
限定边界 | \bgood\d |
\N |
调用(...) 匹配到的子组 |
abc\1 |
\A , \Z
|
同^ 及$
|
\Aabc |
另外,\D
, \W
, \S
, \B
与上述对应字符意义相反。
扩展表达式
符号 | 描述 | 实例 |
---|---|---|
(?iLmsux) |
分组中可以设置模式,iLmsux之中的每个字符代表一个模式 | (?x), (?im) |
(?P<name>...) |
分组的命名模式,取此分组中的内容时可以使用索引也可以使用name | (?P<data>) |
(?:...) |
分组的不捕获模式,计算索引时会跳过这个分组 | go(?:o)?d |
(?P=name) |
分组的引用模式,可在同一个正则表达式用引用前面命名过的正则 | (?P=re1) |
(?#...) |
注释,不影响正则表达式其它部分 | (?#这是注释) |
(?=...) |
表示所在位置右侧能够匹配括号内正则 | (?=.com) |
(?!...) |
表示所在位置右侧不能匹配括号内正则 | (?!.net) |
(?<=...) |
表示所在位置左侧能够匹配括号内正则 | (?<=abc) |
(?<!...) |
表示所在位置左侧不能匹配括号内正则 | (?<!abc) |
(?(id/name)YlN) |
若前面指定id或name的分区匹配成功则执行yes处的正则,否则执行no处的正则 | (?(1)ylx) |
注:(?(id/name)YlN)
与(?(1)ylx)
中的l应替换成竖线“|”。