标签:
一、python正则简介
python的re模块,让python能够支持扩展正则
扩展正则的字符集("." "[abc]" "(abc)" "a|b")、锚点("$" "^" "\<\>")、修饰字符("*" "?" "+" "{}") 这里不做介绍
二、re模块中的函数,主要是三种匹配(match、search、findall)、一种替换(sub)、一种分割(split)
1,match(apttern,string,flags=0)
flag:标志位,用来控制match的匹配方式,一般都没有指定,默认0
match用来从起始位置开始根据模型去字符串中匹配指定内容,如果没有匹配到内容,会返回None 如果匹配到内容 会返回一个MatchObject的对象
使用group()和groups()方法访问匹配的内容
import re string="1234erqwe123" obj=re.match(‘\d+‘,string) #返回一个对象 print(obj) print(obj.group()) #使用group()方法访问匹配的内容 #<_sre.SRE_Match object; span=(0, 4), match=‘1234‘> #1234
import re string="@$1234erqwe123" obj1=re.match(‘([^0-9]+)(\d+)‘,string) print(obj1.group()) #group()返回一个字符串 print(obj1.groups()) #groups()返回一个元组 #@$1234 #(‘@$‘, ‘1234‘)
2,search(pattern, string, flags=0)
search和match就一处区别,可以匹配非行首的pattern,也是通过group()和groups()访问匹配到的数据
string="#$1234erqwe123" obj=re.search(‘(\d+)([^0-9]+)‘,string) print(obj.group()) print(obj.groups()) #1234erqwe #(‘1234‘, ‘erqwe‘)
3,findall(pattern,string,flags=0)
match和search只能匹配一个pattern ,如果想匹配字符串中所有符合要求的pattern ,使用findall()
findall函数返回一个列表
import re string="#$1234erqwe123" obj=re.findall(‘\d+‘,string) #findall函数返回一个列表 print(obj) #[‘1234‘, ‘123‘]
4,sub(pattern,被替换的部分,string,n=0)
sub用于替换指定的字符串 ,比字符串方法replace功能丰富
import re string="1234erqwe123adfa123" new_string=re.sub(‘\d+‘,‘**‘,string) #返回替换后的副本,原字符串不变 new_string2=re.sub(‘\d+‘,‘**‘,string,2) #可指定替换前n个pattern,后面的不替换 print(string) print(new_string) print(new_string2) #1234erqwe123adfa123 #**erqwe**adfa** #**erqwe**adfa123
5,split(pattern,string,n)
split用于按指定匹配切割字符串,n表示按前n个pattern分割,如果n为空则表示按所有的pattern切割,返回一个列表
split函数比字符串方法split功能丰富
import re string="1234erqwe123adfa123" new_string=re.split(‘\d+‘,string,1) #以前1个pattern为分割符 new_string1=re.split(‘\d+‘,string,2) #以前2个pattern为分割符 new_string2=re.split(‘(\d+)‘,string,1) #如果pattern中带有括号,括号里面的内容会返回 new_string3=re.split(‘(\d+)‘,string,2) # print(new_string) print(new_string1) print(new_string2) print(new_string3) #[‘‘, ‘erqwe123adfa123‘] #[‘‘, ‘erqwe‘, ‘adfa123‘] #[‘‘, ‘1234‘, ‘erqwe123adfa123‘] #[‘‘, ‘1234‘, ‘erqwe‘, ‘123‘, ‘adfa123‘]
标签:
原文地址:http://www.cnblogs.com/zhoufeng1989/p/5591842.html