Python中的正则表达式 - 我的天地

Python中的正则表达式

rurutia posted @ 2007年4月11日 19:38 in 编程笔记 with tags python 正则表达式 , 2461 阅读
用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')

快上很多。


* 登录
*

simple_captcha.jpg
(输入验证码)
© is-Programmer.com All rights reserved. | Power by Chito 1.1.4 | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee