7.python之正则表达式re模块

Posted

tags:

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

一.re模块的常用方法:

re.findall() 用于返回一个字符串中,所有能被正则表达式所匹配到的字符串,以列表的方式返回。

用法re.findall(正则表达式,字符串)。

s1 = "sadjhjafdsajkhjsdaysadsadduayu"

比如说,想要从上面这一长串字符串中,匹配出a后面有一个任一字符在紧接着一个字母u的字符串。

print re.findall(‘a.u‘,s1)

>>>[‘ayu‘]


re.finditer()作用和findall一样,不过finditer返回的并不是个列表,而是个迭代器对象,如果需要迭代操作,推荐使用finditer方法。


re.search() 在字符串中按照正则表达式去查找匹配所需要的字符串,只找第一个匹配到的结果,然后返回一个match对象,这个对象中包含了,通过正则表达式匹配的信息,我们可以通过执行该对象.group方法去获取所匹配到的字符串,如果找到想匹配的字符串,就回返回一个None。

用法:re.search(正则表达式,字符串,flag)

s1 = "hamasaki ayumi"

print re.search(‘a.u‘,s1).group()

>>>ayu

re.match()字符串中按照正则表达式去查找匹配所需要的字符串,和search不同的是match只会从字符串的开头进行匹配!如果字符串开始不符合正则表达式,则匹配失败!

用法和search是一样的。


re.split()按照指定的正则表达式去拆分字符串。

例:

以所有的字符串做为分隔符。

s = "a1b2c3d4e5"

print re.split(r‘\d‘,s)

>>>[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘‘]


re.sub()替换,使用正则表达式匹配出字符串中的指定内容,然后将其替换成指定的字符串。

s = "a1b2c3d4e5"

print re.sub(r‘[a-z]‘,‘ayu‘,s)

>>>ayu1ayu2ayu3ayu4ayu5

re.sub()函数还有个参数,可以设置替换多少次。

比如说,只想替换前三个匹配到的。

s = "a1b2c3d4e5"

print re.sub(r‘[a-z]‘,‘ayu‘,s,3)

>>>ayu1ayu2ayu3d4e5


re.subn() 和sub一样,都是通过正则来替换字符串内容的功能,但是subn会返回一个元组,这个元组里不单单只有替换后的字符串,还包含了这个字符串中的内容被替换了几次。

例如:

s = "a1b2c3d4e5"

print re.subn(r‘[a-z]‘,‘ayu‘,s)

>>>(‘ayu1ayu2ayu3ayu4ayu5‘, 5)


re.compile() 编译,可以把正则表达式编译成一个正则表达式对象。可以把那些经常使用的正则表达式编译成正则表达式对象,这样可以提高一定的效率。



二.python正则表达式之分组。

python中正则常用的分组方式大概分为两种。

方法1:

print re.search(r‘(^\d{3,4})-(\d{3,8})‘,‘010-123456‘).group(0)

>>>010-123456

print re.search(r‘(^\d{3,4})-(\d{3,8})‘,‘010-123456‘).group(1)

>>>010

print re.search(r‘(^\d{3,4})-(\d{3,8})‘,‘010-123456‘).group(2)

>>>123456

如果正则表达式中定义了组,就可以在Match对象上用group()方法提取出子串。 

注意到group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串。


方法2:

命名分组

print re.search(r‘(?P<zone_num>^\d{3,4})-(?P<phone_num>\d{3,8})‘,‘010-123456‘).group("zone_num")

>>>010

print re.search(r‘(?P<zone_num>^\d{3,4})-(?P<phone_num>\d{3,8})‘,‘010-123456‘).group("phone_num")

>>>123456

本文出自 “reBiRTH” 博客,请务必保留此出处http://suhaozhi.blog.51cto.com/7272298/1910537

以上是关于7.python之正则表达式re模块的主要内容,如果未能解决你的问题,请参考以下文章

Python之re模块实现正则表达式

python系列——正则表达式之re模块01

python之基础篇——正则表达式RE模块

python正则表达式之re模块使用

re模块之re.match

python--模块之re正则表达式