Python中的正则表达式 - 我的天地
Python中的正则表达式
用mmap()共享内存简单的介绍一下正则表达式在python的用法。
正则表达式在python中作为一个模块存在,re模块,所以要想应用正则,先要import re模块:
import re
正则表达式本身是一段字符串,为了加速正则匹配的过程,要先将正则表达式“编译”成一个正则表达式对象(这里举例用“(\d+)\.(\d*)”,用来匹配像3.14159这样的表达小数的字符串,并包含了整数和小数部分的分组信息):
r=re.compile(r'(\d+)\.(\d*)')
r就是所谓的正则表达式对象了,正则是用来匹配字符串的,所以其中最重要的一个方法就是match(str),这个方法返回另一个对象,叫做MatchObject,其中包含了关于匹配的信息:
m=r.match("3.14159")
m就是所谓的MatchObject,其中最重要的方法就是group(n),返回分组匹配的字符串,group(1)就对应正则中的“\1”,group(2)就对应“\2”,依次类推,group(0)返回整个匹配字符串:
>>>m.group(0)
'3.14159'
>>>m.group(1)
'3'
>>>m.group(2)
'14159'
还有两个方法start(n)、end(n),返回分组n的开始和结束的位置:
>>>m.start(2)
2
>>>m.end(2)
7
上面就是匹配的基本用法,正则另外一个重要的应用就是替换,是用正则表达式对象的sub()方法来实现的:
>>>r.sub('4.\\2','3.14159')
'4.14159'
值得一提的是,如果只需要提取分组部分的内容,那么group(n)要比sub()快的多,比如我们要提取3.14159的小数部分,那么:
r.match("3.14159").group(2)
要比
r.sub('\\2','3.14159')
快上很多。
