字符
语法 | 说明 | 实例 | 匹配 |
一般字符 | 匹配自身 | abc | abc |
. | 匹配任意字符(除换行符\n) | a.c | abc |
\ | 转义字符,使特殊字符失效 | a\.c | a.c |
[...] | 字符集,匹配[]中任意字符。 [abc]或[a-c] [^abc]:abc以外的字符 | a[bc]d | abd acd |
预定义字符集(\d\D\s\S\w\W)
语法 | 说明 | 实例 | 匹配 |
\d | 数字,[0-9] | a\dc | a1c |
\D | 非数字[^\d] | a\Dc | abc |
\s | 空白字符,[<空格>\t\n\r\f\v\r] | a\sb | a b |
\S | 非空白字符,[^\s] | a\Sc | abc |
\w | 单词字符,[A-Za-z0-9] | a\wc | abc |
\W | 非单词字符,[^\w] | a\Wc | a c |
数量词(用在字符或(...)之后)
语法 | 说明 | 实例 | 匹配 | |
* | 匹配前一个字符0或者无数次 | abc* | ab abccc | |
+ |
| abc+ | abc abcc | |
? | 匹配前一个字符0或者1次 | abc? | ab abc | |
{m} | 匹配前一个字符m次 | ab{2}c | abbc | |
{m,n} |
| abc+ | abc abcc |
边界匹配(不消耗待匹配字符串中字符)
语法 | 说明 | 实例 | 匹配 | |
^ | 匹配字符串开头 在多行匹配中匹配每一行开头 | ^abc | abc | |
$ |
| abc$ | abc | |
\A | 仅匹配字符串开头 | \Aabc | abc | |
\Z | 仅匹配字符串结尾 | abc\Z | abc | |
\b | 匹配\w和\W之间 | a\b!bc | abc | |
\B | [^\b] | a\Bbc | ab abc |
逻辑分组
语法 | 说明 | 实例 | 匹配 |
| | |左右表达式任意匹配一个 总是先匹配左边的,匹配到左边则跳过右边表达式 | abc|dfe | abc dfe |
(...) | 被()括起来的表达式作为一个分组,分组编号依次+1。()作为整体,后面可以接量词。表达式中的|仅在()该组有效 | (abc){2} (abc|edf) | abcabc def |
(?P<name>...) | 除原有编号,在起一个别名name | (?P<id>abc) | abc |
(?P=name) | 引用name匹配到的字符串 | (?P<id>\d)abc(?P=id) | 1abc1 5abc5 |
\<number> | 引用编号为<number>匹配到的字符串 | (\d)abc\1 | 2abc2 |