理解python正则表达式
在python中,对正则表达式的支持是通过re模块来支持的。使用re的步骤是先把表达式字符串编译成pattern实例,然后在使用pattern去匹配文本获取结果。 其实也有另外一种方式,就是直接使用re模块的方法,但是这样就不能使用编译后的pattern实例了。 实例: #!/usr/bin/python # -*- coding: utf-8 -*- import re pat = re.compile(r'hello') match = pat.match('hello world!') if match: print match.group() match1 = re.match(r'hello','hello world!') if match1: print match1.group() print match1.pos 返回的结果相同,都是 hello 关于Pattern 对象: 它是由re.complie函数来构造的,是一个编译好的正则表达式,通过Pattern提供的一系列方法可以对文本进行匹配查找。 Pattern不能直接实例化,必须使用re.compile()进行构造。 Pattern提供了几个可读属性用于获取表达式的相关信息:
关于 re.compile方法 re.compile(strPattern[,flag]): 这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。 第二个参数flag是匹配模式,取值可以使用按位或运算符'|'表示同时生效,比如re.I | re.M。另外,你也可以在regex字符串中指定模式,比如re.compile('pattern',re.I | re.M)与re.compile('(?im)pattern')是等价的。
1).关于 match方法: Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息。 属性:
方法: 1、group([group1,…]): #!/usr/bin/python # -*- coding: utf-8 -*- import re m = re.match(r'(w+)s(w+)','aaa bbb ccc') print m.string print m.re print m.pos print m.endpos print m.lastindex print m.lastgroup print m.group() print m.start() print m.end() print m.span() print m.expand(r'2 1') 结果为: aaa bbb ccc 2).关于search方法: 查找可以匹配的子串,和match 不同的是他不是从开始处开始匹配的。如果没有匹配上,则返回None 上面的例子中,将match 换成search返回的结果一样 请看: #!/usr/bin/python # -*- coding: utf-8 -*- import re pat = re.compile(r'hello') match = pat.match('shello world!') if match: print match.group() else: print 'not match!' match1 = re.search(r'hello','shello world!') if match1: print match1.group() 结果为: not match! 这2个函数,没有其他区别,就是一个是从开始匹配的,另外一个不是开始的 3.split(string[,maxsplit]) | re.split(pattern,string[,maxsplit]): 4.findall(string[,pos[,endpos]]) | re.findall(pattern,flags]): 5.finditer(string[,endpos]]) | re.finditer(pattern,flags]): 6.sub(repl,count]) | re.sub(pattern,repl,count]): 7.subn(repl,count]) |re.sub(pattern,count]): 例子为: #!/usr/bin/python # -*- coding: utf-8 -*- import re p =re.compile(r'd+') print p.split('aa1bb2cc3dd4ee5ff6') print p.findall('aa1bb2cc3dd4ee5ff6') for m in p.finditer('aa1bb2cc3dd4ee5ff6'): print m.group(),print 'nsub test' p1 =re.compile(r'(w+)s+(w+)') s = 'i am ok' print p1.sub(r'2 1',s) print p1.subn(r'2 1',s) 结果: ['aa','bb','cc','dd','ee','ff',''] 以上就是本文的全部内容,希望对大家的学习有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |