Python正则表达式

Posted qhdxqxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python正则表达式相关的知识,希望对你有一定的参考价值。

方法

方法 描述
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

以上是关于Python正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Python 正则表达式

转:Python正则表达式指南

详解 Python3 正则表达式系列索引

Python正则表达式指南

python:正则1

python正则表达式