#coding:utf-8
import re
#将正则表达式编译成pattern对象
pattern = re.compile(r'\d+')
#使用re.match匹配文本,获得匹配结果,无法匹配时,返回None
#result1 = re.match(pattern,'192abc')
"""
re.match()函数只在字符串开始的位置匹配,而re.search()会扫描整个string查找匹配
re.split()是按照能够匹配的字符串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定,将全部分割
re.findall(),搜索整个string,以列表的形式返回能匹配的全部字符串
"""
result1 = re.search(pattern,'192abc')
if result1:
print result1.group()
else:
print '匹配失败1'
#result2 = re.match(pattern,'abc192')
result2 = re.search(pattern,'abc192')
if result2:
print result2.group()
else:
print '匹配失败2'
print re.split(pattern,'A1B2C3D4')
print re.findall(pattern,'A1B2C3D4')
matchiter = re.finditer(pattern,'A1B2C3D4') #搜索整个string,以迭代器形式返回能匹配的全部Match对象。
for match in matchiter:
print match.group()
#re.sub(pattern,repl,string[,count])
"""
使用repl替换string中匹配到的字符后并返回替换后的字符串。当repl是一个字符串时,可以使用\id或\g<id>、
\g<name>引用分组,但不能使用编号0。当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回
一个字符串用于替换(返回的字符串中不能再引用分组)。count用于指定最多替换次数,不指定时全部替换
"""
p = re.compile(r'(?P<word1>\w+) (?P<word2>\w+)') #使用名称引用
s = 'I say,hello world!'
print p.sub(r'\g<word2> \g<word1>',s)
p = re.compile(r'(\w+) (\w+)')#使用编号
print p.subn(r'\2 \1',s)
print p.sub(r'\2 \1',s)
def func(m):
return m.group(1).title() + ' ' + m.group(2).title()
print p.sub(func,s)
print p.subn(func,s)
Python正则
最新推荐文章于 2024-10-07 01:36:35 发布