符号
说明
实例
.
表示任意字符,
如果说指定了
DOTALL
的标识,就表示包括新行在内的所有字
符。
'abc'
>>>'a.c'
>>>
结果为
:'abc'
^
表示字符串开头。
'abc'
>>>'^abc'
>>>
结果为
:'abc'
$
表示字符串结尾。
'abc'
>>>'abc$'
>>>
结果为
:'abc'
*, +, ?
'*'
表示匹配前一个字符重复
0
次到无
限次,
'+'
表示匹配前一个字符重复
1
次
到无限次,
'?'
表示匹配前一个字符重复
0
次到
1
次
'abcccd'
>>>'abc*' >>>
结果为
:'abccc'
'abcccd' >>>'abc+'
>>>
结果为
:'abccc'
'abcccd' >>>'abc?'
>>>
结果为
:'abc'
*?, +?, ??
前面的
*,+,?
等都是贪婪匹配,也就是尽
可能多匹配,后面加
?
号使其变成惰性
匹配即非贪婪匹配
'abc'
>>>'abc*?' >>>
结果为
:'ab'
'abc'
>>>'abc??' >>>
结果为
:'ab'
'abc'
>>>'abc+?' >>>
结果为
:'abc'
{m}
匹配前一个字符
m
次
'abcccd' >>>'abc{3}d'
>>>
结果为
:'abcccd'
{m,n}
匹配前一个字符
m
到
n
次
'abcccd'
>>> 'abc{2,3}d' >>>
结
果
为
:'abcccd'
{m,n}?
匹配前一个字符
m
到
n
次,
并且取尽
可能少的情况
'abccc'
>>> 'abc{2,3}?' >>>
结果为
:'abcc'
\
对特殊字符进行转义,或者是指定特殊
序列
'a.c' >>>'a\.c' >>>
结果为
: 'a.c'
[]
表示一个字符集
,
所有特殊字符在其都
失去特殊意义
,
只有:
^
-
]
\
含有特
殊含义
'abcd' >>>'a[bc]' >>>
结果为
:'ab'
|
或者,只匹配其中一个表达式
,如果
|
没有被包括在
()
中,则它的范围是整个
正则表达式
'abcd' >>>'abc|acd' >>>
结果为
:'abc'
( … )
被
括
起
来
的
表
达
式
作
为
一
个
分
组
.
findall
在有组的情况下只显示组的内
容
'a123d' >>>'a(123)d' >>>
结果为
:'123'
(?#...)
注释,忽略括号内的内容
特殊构建不
作为分组
'abc123'
>>>'abc(?#fasd)123'
>>>
结
果
为
:'abc123'
(?= … )
表达式
’…’
之前的字符串,特殊构建不
作为分组
在字符串
’ pythonretest ’
中
(?=test)
会匹配
’
pythonre ’
(?!...)
后面不跟表达式
’…’
的字符串,特殊构
建不作为分组
如果
’ pythonre ’
后面不是字符串
’ test ’
,那
么
(?!test)
会匹配
’ pythonre ’
(?<= … )
跟在表达式
’…’
后面的字符串符合括号
之后的正则表达式,特殊构建不作为分
组
正则表达式
’
(?<=abc)def
’
会在
’
abcdef
’
中
匹配
’ def ’
(
?:
)
取消优先打印分组的内容
'abc' >>>'(?:a)(b)' >>>
结果为
'[b]'
?P<>
指定
Key
'abc'
>>>'(?Pa)>>>
结
果
为
:groupdict{n1:a}