python的正则表达式对象的使用也是很方便的,特别是提供了许多内置便捷的匹配方法。

#!/user/bin/env python
#coding:utf-8

print '正则表达式'

import re

#创建一个规则对象,默认非贪心,re.I为忽略大小写
pattern = re.compile(r'python',re.I)

#match方法:从字符串开始,如果匹配字符满足规则,则返回匹配对象,注意是“匹配对象”,而不是直接匹配的字符串
print re.match(pattern,'1python')#必需从第一个开始满足
print re.match(pattern, 'python1')
print re.match(pattern, 'Python')

#或者
print pattern.match('Python'),'other method'
print '=============================================='


string = 'App is app'
#match方法:返回匹配对象
#下面的规则中包含了多个子规则,使用I和M模式,如果传入的是匹配对象并设置了该参数,可以不设置
matching = re.match('(.*) is (.*)',string,re.I|re.M)
print matching.group()#得到所有满足规则的字符串元组
print matching.group(1)#得到满足规则元组中的第一个字符串
print matching.start()#截获起始位置
print matching.end()#截获结束位置
print matching.span()#得到匹配截获的部分所在字符串的下标区间
print matching.groups()#匹配的元组
print matching.pos
print matching.endpos
print matching.lastindex
print matching.lastgroup
print matching.groupdict()
print '=============================================='

#search方法:和match类似,但是不一定要从一开始匹配,而是搜索整个字符串
string = 'yes I like better'
searching = re.search('I like better', string, re.I|re.M)
print searching.group()

string = 'good,good,good'
#split方法:切割匹配的字符串,以匹配的字符为切割点,0为最大切割次数,该方法返回list
print re.split('good', string, 2)

#findall方法:和search类似,但是会返回所有匹配的字符串,该方法返回list
print re.findall('good', string)

#finditer方法:迭代匹配返回
for sub in re.finditer('good', string):
    print sub.group(),
    
#sub方法:匹配并替换,0为替换所有,替换的参数可以是方法,但必需是一个参数且参数为match对象而方法,替换的参数也可以转义为分组名
print re.sub('good', 'better', string, 0)


输出:

正则表达式
None
<_sre.SRE_Match object at 0x0000000005794718>
<_sre.SRE_Match object at 0x0000000005794718>
<_sre.SRE_Match object at 0x0000000005794718> other method
==============================================
App is app
App
0
10
(0, 10)
('App', 'app')
0
10
2
None
{}
==============================================
I like better
['', ',', ',good']
['good', 'good', 'good']
good good good better,better,better

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐