1.一个例子
import remyre = re.compile(r'(\d+)[^\d]*(\d+)')str = '123asdf68'mymatch = myre.match(str)if mymatch: print mymatch.group() print mymatch.group(0) print mymatch.group(1) print mymatch.group(2)
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>0pattern对象的属性及方法
在此将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正则表达式指南