ღ Miranda

Python 正则表达式

正则表达式(RE)为高级文本模式匹配,RE是一些由字符和特殊符号组成的字符串,描述了字符串的某种重复方式。Python通过re模块支持RE,包含了处理RE的几个函数。

re库函数


match()匹配字符串

可以以如下方式调用:

当匹配时会返回实例,匹配失败返回None。

group()方法

可以以如下方式调用:

直接打印出匹配的字符串,不匹配则会引发错误。

groups()方法

返回包含唯一或所有子组的元组,没有子组的话会返回空元组:

search()在一个字符串中查找模式

search与match不同,search检查任意位置匹配情况,举例说明与match的区别:m = re.match('foo', 'sefoo')
会失败,而改用search则能匹配成功。

特殊字符


字母

正则表达式里出现的字符"\d", "\w", "\s", "\A(\Z)", "\b""\d"匹配任何数字,"\w"匹配任何数字字母字符,和[A-Za-z0-9_]相同,"\s"匹配任何空白字符,和[\n\t\r\v\f]相同,"\A(\Z)"匹配开头(结束),"\b"匹配单词边界。

字符

"|"匹配多个字符串,"."匹配任意单个字符,可以用"\"转义匹配".",还可以用"[]"创建字符集,如"[das]"匹配d或a或s。

特殊符号


正则表达式里的特殊符号"*" "+" "?"可以匹配字符串出现一次,多次或未出现的情况。"*"匹配左边出现零次或零次以上的情况,"+"匹配左边至少出现一次的情况,"?"匹配左边出现一次或零次的情况。 "{}"操作,花括号里可以是一个值也可以是两个值,{N}表示出现N次,{N, M}表示出现N到M次。这些符号可以用\转义。

子组和边界匹配

简单邮件正则示例

但这样的正则不能满足邮件地址中出现的各种字符如"-",现在修改正则表达式:

这样的用子组可以使得匹配"-".

深入理解子组

边界匹配

使用"\b"可以实现边界匹配,但在正则表达式前要加r防止被转义。

使用"^"匹配开头:

其他re模块函数

findall()

用于非重叠搜索字符串中正则表达式出现的情况:

sub()和subn()

两者几乎一样,都将某字符串中所有匹配正则的部分替换,但subn()返回一个表示替换次数的数字,替换后的字符串,并作为元组返回

split()

与字符串的split()的方法相似,只是根据正则模式分割。如果没有使用特殊符号,re.split()"string.split()"相同。

发表评论

电子邮件地址不会被公开。