方法
方法 | 描述 |
re.compile(pattern[,flag]) | 编译正则表达式,生成Pattern实例 |
re.match(pattern, string, flags=0) | 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,就返回None;如果匹配成功,则可以通过返回结果的group(num)或groups()方法获取匹配的表达式 |
re.search(pattern, string, flags=0) | 扫描整个字符串并返回第一个成功的匹配,如果不能匹配,就返回None;如果匹配成功,则可以通过返回结果的group(num)或groups()方法获取匹配的表达式 |
re.sub(pattern, repl, string, count=0, flags=0) | 替换字符串中的匹配项,其中repl为替换的字符串,也可以为一个函数 |
可选标志
修饰符 | 描述 |
re.l | 使匹配对大小写不敏感 |
re.L |
做本地化识别匹配 |
re.M | 多行匹配,影响^和$ |
re.S | 使.匹配包含换行在内的所有字符 |
re.U | 根据Unicode字符集解析字符。这个标志影响\w,\W,\b,\B |
re.X | 该标志通过给予更灵活的格式以便将正则表达式写得更易于理解 |
元素
模式 | 描述 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的末尾 |
. | 匹配除换行符之外的任意字符。当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符 |
[...] | 表示一组字符 |
[^...] | 表示不在[]中的字符 |
re* | 匹配0个或多个表达式 |
re+ | 匹配1个或多个表达式 |
re? | 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 |
re{n} | 精确匹配n个前面的表达式 |
re{n,} | 精确匹配n个前面的表达式 |
re{n,m} | 匹配n到m次由前面的正则表达式定义的判断,贪婪方式 |
a|b | 匹配a或b |
(re) | 匹配括号内的表达式,也表示一个组 |
(?imx) | 正则表达式包含三种可选标志imx,只影响括号中的匹配 |
(?-imx) | 关闭imx可选标志,只影响括号中的匹配 |
(?:re) | 类似(...),但是不表示一个组 |
(?imx:re) | 在括号中使用imx可选标志 |
(?-imx:re) | 在括号中不使用imx可选标志 |
(?#...) | 注释 |
(?=re) | 之后的字符串内容需要匹配表达式才能成功匹配,不消耗字符串内容 |
(?!re) | 之后的字符串内容需要不匹配表达式才能成功匹配,不消耗字符串内容 |
(?<=...) | 之前的字符串内容需要匹配表达式才能成功匹配,不消耗字符串内容 |
(?<!...) | 之前的字符串内容需要不匹配表达式才能成功匹配,不消耗字符串内容 |
(?>re) | 匹配的独立模式,省去回溯 |
\w | 匹配字母数字及下划线 |
\W | 匹配非字母数字及下划线 |
\s | 匹配任意空白字符,等价于[\t\n\r\f] |
\S | 匹配任意非空字符 |
\d | 匹配任意数字,等价于[0-9] |
\D | 匹配任意非数字 |
\A | 匹配字符串开始 |
\Z | 匹配字符串结束,如果存在换行,只匹配到换行前的结束字符串 |
\z | 匹配字符串结束 |
\G | 匹配最后匹配完成的位置 |
\b | 匹配一个单词边界,也就是指单词和空格间的位置 |
\B | 匹配非单词边界 |
\1...\9 | 匹配第n个分组的内容 |
\10 | 匹配第n个分组的内容,也可能指的是八进制字符码的表达式 |
(?P<name>...) | 分组,除了原有的编号外再指定一个额外的别名 |
(?p=name) | 引用别名为name的分组匹配到的字符串 |
(?(id/name)yes-pattern|no-pattern) | 如果标号为id/name的组匹配到字符,则需要匹配yes-pattern,否则需要匹配弄-pattern。|no-pattern可以省略 |
Pattern
成员 | 描述 |
pattern | 编译时用的表达式字符串 |
flags | 编译时使用的匹配模式,数字形式 |
groups | 表达式中分组的数量 |
groupindex | 以表达式中有别名的组的别名为键,以该组对应的编号的值为字典,没有别名的组不包含在内 |
match(string[,pos[,endpos]]) | 从string的pos下标处开始尝试匹配pattern,到endpos下标处为止 |
search(string[,pos[,endpos]]) | 从string的pos下标处开始尝试匹配pattern,到endpos下标处为止 |
split(string[,maxsplit]) | 按照能够匹配的子串将string分割后返回列表,maxsplit用于指定最大分割次数,不指定将全部分割 |
findall(string[,pos[,endpos]]) | 搜索string,以列表的形式返回全部能匹配的子串 |
finditer(string[,pos[,endpos]]) | 搜索string,返回一个顺序访问每一个匹配结果的迭代器 |
sub(repl,string[,count]) | 使用repl替换string中的每一个匹配的子串后返回替换后的字符串。当repl是一个字符串时,可以引用分组,单不能使用编号0;当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组) |
subn(repl,string[,count]) | 返回(sub(repl,string[,count],替换次数) |
Match
成员 | 描述 |
string | 匹配时使用的文本 |
re | 匹配时使用的Pattern对象 |
pos | 文本中正则表达式开始搜索的索引 |
endpos | 文本中正则表达式结束搜索的索引 |
lastindex | 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None |
lastgroup | 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None |
group(index) | 获得一个或多个分组解惑的字符串 |
groups([default]) | 以元组形式返回全部分组截获的字符串。default表示没有截获字符串的组以这个值代替,默认为None |
groupdict([default]) | 返回以有别名的组的别名为键、以该组结果的子串为值的字典,没有别名的组不包含在内 |
start([group]) | 返回指定的组截获的子串在string的起始索引 |
end([group]) | 返回指定的组截获的子串在string中的结束索引 |
span([group]) | 返回(start(group),end(group)) |
expand(template) | 将匹配到的分组代入template然后返回。template中可以使用\id或\g<id>、\g<name>引用分组,但不能使用编号0 |