理解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',''] 以上就是本文的全部内容,希望对大家的学习有所帮助。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
