python里提供了两种对正则表达式的操作:match和serch
1.match
函数原型:re.match(pattern, string, flags)
pattern为正则表达式,string为被匹配的文本,flags是匹配规则,如是否区别大小写等,若匹配到返回match object,若无,返回None
import re
data="oiudasmiasdiuthjdks79854.,;'34687132asd4f "
result=re.match('asd',data)
print(result.group(0))
运行结果:
2.search
函数原型:re.search(pattern, string, flags)
含义同上
import re
data="oiudasmiasdiuthjdks79854.,;'346871325asd4f "
result=re.search('asd',data)
print(result.group(0))
运行结果:
match 和 search的区别:match从字符串的开始位置开始匹配,若开始部分不匹配,则返回None,search则匹配整个字符串,只要字符串有符合表达式规则的就返回一个match object。
3.findall
函数原型:findall(pattern, string, flags=0)
pattern为正则表达式,string为被匹配的文本,flag为替换规则,如是否区分大小写。若匹配到一个及以上的结果返回一个list。
import re
data="oiudasmiasdiuthjdks79854.,;'346871325asd4f "
result=re.findall('asd',data)
print(result)
运行结果:
4.finditer
函数原型:finditer(pattern, string, flags=0)意义同上,只不过返回的是一个迭代器
import re
data="oiudasmiasdiuthjdks79854.,;'346871325asd4f "
result=re.finditer('asd',data)
print(result)
for x in result:
print(x.group())
运行结果:
5.re.subn与re.sub
函数原型:subn(pattern, repl, string, count=0, flags=0)
sub(pattern, repl, string, count=0, flags=0)
pattern为正则表达式,repl为替换的文本,string是被匹配的文本,count是替换次数,缺省为0,表示全部替换,flag是匹配规则,如是否区别大小写等,可省略。
subn返回的结果是一个元组(替换后的字符串,替换次数)。
sub仅返回替换后的字符串。
不区分大小写把首次匹配到的‘asd'文本替换为'jojo'
import re
data="oiudasmiAsdiuthjdks79854.,;'346871325asd4f "
result=re.subn('asd','jojo',data,count=1,flags=2)
print(result)
运行结果:
6.re.spilt
函数原型:split(pattern, string, maxsplit=0, flags=0)
pattern为正则表达式,string是被匹配的文本,maxspilt为分割次数,缺省下为0,flag为匹配规则。返回的是分割后的字串组成的元组
import re
data="oiudasmiasdiuthjdks79854.,;'346871325asd4f "
result=re.split('asd',data)
print(result)
运行结果:
7.escape
函数原型:escape(pattern)
把pattern里的除数字字母外所有的字符前加一个斜杠
import re
data="oiudasmiasdiuthjdks79854.,;'346871325asd4f "
result=re.escape('asd.;/.,')
print(result)
运行结果:
8.match object
属性:string :传入的文本
pos 和 endpos:开始的索引和结束的索引,索引默认以0开始
lastgroup:最后匹配到分组的名称,若该分组没有别名或者没有捕获,则为None
lastindex:最后匹配到分组的索引
import re
data="oiudasmiasdiuthjdks79854.,;'346871325asd4f "
result=re.search('asd',data)
print(result.string)
print(result.pos)
print(result.endpos)
print(result.lastgroup)
print(result.lastindex)
运行结果
方法:
group():返回捕获的子串
start(),end():返回字串在原字符串开始/结束的索引
span():返回(start(),end())
expand(template):将匹配到的模版在template中展开
import re
data="oiudasmiasdiuthjdks79854.,;'346871325asd4f "
result=re.search('asd',data)
print(result.start())
print(result.end())
print(result.span())
print(result.expand('result is \g<0>'))
运行结果: