python之re库

来源:互联网 发布:网络大电影招商案 编辑:程序博客网 时间:2024/05/17 18:01

1.一个例子

#!/usr/bin/env pythonimport remyre = re.compile(r'(\d+)[^\d]*(\d+)')str = '123asdf68'mymatch = myre.match(str)if mymatch:    print mymatch.group() #123asdf68    print mymatch.group(0) #123asdf68    print mymatch.group(1) #123    print mymatch.group(2) #68

2.函数详解

re.compile(strPattern[,flag])
可以用|设置多个标志位,eg:re.I|re.M

flag值 含义 re.I 忽略大小写 re.M 多行模式 re.S 点任意匹配模式 re.L 使预定字符\w \W \b \B \s \S取决于当前区域设定 re.U 使预定字符\w \W \b \B \s \S \d \D取决于unicode定义的属性 re.X 详细模式.这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释

re.match(pattern,str)或pObj.match(str)
match返回对象的属性及方法

属性或方法 作用 string 匹配时使用的文本 re 匹配时使用的pattern对象 pos 文本中正则表达式开始搜索的索引 endpos 文本中正则表达式结束搜索的索引 lastindex 最后一个被捕获的分组在文本中的索引,如果没有被捕获的分组,为None lastgroup 最后一个被捕获的分组的别名.如果这个分组没有别名或没有被捕获的分组,为None group([group1,…]) 获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回.group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串 groups([default]) 以元组形式返回全部分组截获的字符串,default表示没有截获字符串的组以这个值替代,默认为None groupdict([default]) 返回以有别名的组的别名为键,以该组截获的子串为值的字典,没有别名的组不包含在内,default含义同上。 start([group]) 返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引),group默认值为0 end([group]) 返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1),group默认值为0 span([group]) 返回(start(group),end(group)) expand(template) 将匹配到的分组代入template中然后返回.template中可以使用\id或\g,\g引用分组,但不能使用编号0.\id与\g是等价的;但\10将被认为是第10个分组,如果你想表达\1之后是字符’0’.只能使用\g<1>0

pattern对象的属性及方法
在此将pattern对象记为pObj

属性或方法 作用 pObj.pattern 编译时用的表达式字符串 pObj.flags 编译时用的匹配模式,数字形式 pObj.groups 表达式中分组的数量 pObj.groupindex 以表达式中有别名的组的别名为键,以该组对应的编号为值的字典,没有别名的组不包含在内 pObj.match(string[,pos[,endpos]]) 这个方法将从string的pos下标处起尝试匹配pattern;如果pattern结束时仍可匹配,则返回一个Match对象;如果匹配过程中pattern无法匹配,或者匹配未结束就已到达endpos,则返回None,pos和endpos的默认值分别为0和len(string);re.match()无法指定这两个参数,参数flags用于编译pattern时指定匹配模式 pObj.split(string[, maxsplit]) 按照能够匹配的子串将string分割后返回列表,maxsplit用于指定最大分割次数,不指定将全部分割 pObj.search(string[,pos[,endpos]]) 这个方法用于查找字符串中可以匹配成功的子串,从string的pos下标处起尝试匹配pattern,如果pattern结束时仍可匹配,则返回一个Match对象;若无法匹配,则将pos加1后重新尝试匹配;直到pos=endpos时仍无法匹配则返回None, pos和endpos的默认值分别为0和len(string) pObj.findall(string[,pos[,endpos]]) 搜索string,以列表形式返回全部能匹配的子串 pObj.finditer(string[,pos[,endpos]]) 搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器 pObj.sub(repl,string[,count]) 使用repl替换string中每一个匹配的子串后返回替换后的字符串,当repl是一个字符串时,可以使用\id或\g,\g引用分组,但不能使用编号0;当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组),count用于指定最多替换次数,不指定时全部替换 pObj.subn(repl,string[,count]) 返回(pObj.sub(repl,string[,count]),替换次数)
参考:
Python正则表达式指南
0 0