用来匹配字符串
语法 | 说明 | 实例 | 匹配字符串 |
---|---|---|---|
一般字符 | 匹配自身 | abc | abc |
. | 匹配任意除换行符“\n”外的字符 | a.c | abc |
\ | 转义字符,使后一个字符改变原来的意思。如果字符串中有字符需要匹配,可以使用*或者字符集[] | a.c a\c | a.c, a\c |
[…] | 字符集。对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c]。第一个字符如果是^则表示取反,如[^abc]表示不是abc的其他字符。所有的特殊字符在字符集中都失去其原有的特殊含义。在字符集中如果要使用]、-或^,可以再前面加反斜杠,或把]、-放在第一个字符,把^放在非第一个字符 | a[bcd]e | abe ace ade |
\d | 数字:[0-9] | a\dc | a1c |
\D | 非数字:[^\d] | a\Dc | abc |
\s | 空白字符:[<空格>\t\r\n\f\v] | a\sc | a c |
\S | 非空白字符:[^\s] | a\Sc | abc |
\w | 单词字符:[A-Za-z0-9_] | a\wc | abc |
\W | 非单词字符:[^\w] | a\Wc | a c |
数量词(用在字符或(…)之后)
语法 | 说明 | 实例 | 匹配字符串 |
---|---|---|---|
* | 匹配前一个0或无限次 | abc* | ab abccc |
+ | 匹配前一个字符1次或无限次 | abc+ | abc abccc |
? | 匹配前一个字符0次或1次 | abc? | ab abc |
{m} | 匹配前一个字符m次 | ab{2}c | abbc |
{m,n} | 匹配前一个字符m至n次。 m和n可以省略:若省略m,则匹配0至n次;若省略n,则匹配m至无限次。 | ab{1,2}c | abc abbc |
边界匹配
语法 | 说明 | 实例 | 匹配字符串 |
---|---|---|---|
^ | 匹配字符串开头。 在多行模式中匹配每一行的开头 | ^abc | abc |
$ | 匹配字符串末尾。 在多行模式中匹配每一行的末尾 | abc$ | abc |
\A | 仅匹配字符串开头。 | \Aabc | abc |
\Z | 仅匹配字符串末尾。 | abc\Z | abc |
\b | 匹配\w和\W之间 | a\b!bc | a!bc |
\B | [^\b] | a\Bbc | abc |
逻辑分组
语法 | 说明 | 实例 | 匹配字符串 |
---|---|---|---|
| | 代表左右表达式任意匹配一个。它总是先尝试匹配左边的表达式,一旦成功匹配则跳过匹配右边的表达式。如果|没有被包括在()中,则它的范围是整个正则表达式。 | abc|def | abc def |
(…) | 被括起来的表达式将作为分组,从表达式左边开始每遇到一个分组的左括号’(’,编号+1. 另外,分组表达式作为一个整体,可以后接数量词。表达式中的|仅在该组中有效 | (abc){2} a(123|456)c | abcabc a456c |
(?P<name>…) | 分组,除了原有的编号外再指定一个额外的别名。 | (?P<id>abc){2} | abcabc |
\<number> | 引用编号为<number>的分组匹配到的字符串。 | (\d)abc\1 | 1abc1 5abc5 |
?P=name | 引用别名为<name>的分组匹配到的字符串 | (?P<id>\d)abc(?P=id) | 1abc1 5abc5 |