正则表达式的特殊字符
符号 | 说明 |
^ | 正则表达式的开始字符 |
$ | 正则表达式的结束字符 |
\w | 匹配字母、数字、下划线 |
\W | 匹配不是字符、数字、下划线的字符 |
\s | 匹配空白字符 |
\S | 匹配不是空白的字符 |
\d | 匹配数字 |
\D | 匹配非数字的字符 |
\b | 匹配单词的开始和结尾 |
\B | 匹配不是单词开始和结尾的位置 |
. | 匹配任意字符,包括汉字 |
[m] | 匹配单个字符串 |
[m1m2...n] | 匹配多个字符串 |
[m-n] | 匹配m到n区间内的数字、字母 |
[^m] | 匹配除m以外的字符串 |
() | 对正则表达式进行分组,一对圆括号表示一组 |
注意:a>匹配符"[]"可以指定一个匹配范围,例如"[ok]"将匹配包含"o"或"k"的字符。
b>^与[^m]中的"^"的含义并不相同,后者的"^"表示"除了..."的意思
正则表达式的常用限定符
符号 | 说明 |
* | 匹配零次或多次 |
+ | 匹配一次或多次 |
? | 匹配一次或零次 |
{m} | 重复m次 |
{m.n} | 重复m到n次,其中n可以省略,表示m到任意次 |
注意:"("和")"是正则表达式中的特殊字符,如果要把他们作为普通字符处理,需要在前面添加转义字符"\".
限定符与"?"的组合
符号 | 说明 |
*? | 匹配零次或多次,且最短匹配 |
+? | 匹配一次或多次,且最短匹配 |
?? | 匹配一次或零次,且最短匹配 |
{m,n}? | 重复m次,且最短匹配 |
(?#...) | 正则表达式的注释 |
(?P<name>...) | 给分组命名,name表示分组的名称 |
(?P=name) | 使用名为name的分组 |
re模块的常用函数
函数 | 说明 |
findall(pattern,string,flag=0) | 根据pattern在string中匹配字符串,如果匹配成功,返回包含匹配结果的列表,否则返回空列表。当pattern中有分组时,返回包含多个元组的列表,每个元组对应一个分组。flag表示规则选项,规则选项用于辅助匹配(如下表) |
sub(pattern,repl,string,count=0) | 根据指定的正则表达式替换源字符串的子串。pattern是一个正则表达式,repl是用于替换的字符串,string是源字符串。如果count=0,则返回string中匹配的所有结果,如果count大于0,则返回前count个匹配结果 |
subn(pattern,repl,string,count=0) | 作用和sub()相同,返回1个2元的元组,第一个元素是替换结果,第二个元素是替换的次数 |
match(pattern,string,flags=0) | 根据pattern从string的头部开始匹配字符串,只返回第一次匹配成功的对象,否则返回"None" |
search(pattern,string,flags=0) | 根据pattern在string中匹配字符串,只返回第一次匹配成功的对象。如果匹配失败,返回"None" |
compile(pattern,flags=0) | 编译正则表达式pattern,返回一个Pattern对象 |
split(pattern,string,maxsplit=0) | 根据pattern分割string,maxsplit表示最大的分割数 |
escape(pattern) | 匹配字符串中的特殊字符,如"*"、"+"、"?"等 |
re模块的规则选项
选项 | 说明 |
I或者IGNORECASE | 忽略大侠些 |
L或者LOCALE | 字符集本地化,用于多语言环境 |
M或者MULTILINE | 多行匹配,使^$匹配除了string开始结束外,还匹配一行的开始和结束 |
S或者DOTALL | 使"."匹配包括"\n"在内的所有字符 |
X或者VERBOSE | 忽略正则表达式中的空白、换行、以方便添加注释 |
U或者UNICODE | "\w"、"\W"、"\b"、"\B"、"\d"、"\D"、"\s"、"\S"都将使用Unicode |
注意:如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。