Python 正则表达式
1.用途
匹配字符串
字符串提供的方法是完全匹配
2.引入正则表达式
模糊匹配,贪婪匹配
3.元字符
import re # . 通配符 # 代表匹配所有的字符,除了换行符,但是只能代指一个字符 ret=re.findall('h..','hello world') #['hel'] # ^ # 只从字符串的开始进行匹配 ret=re.findall('^h..l','hduhedheheelo') #[] #$ # 只从字符串的末尾开始匹配 ret=re.findall('a..x$','alexyhfueueh') #[] # * # 重复匹配前一个字符0-无穷次 ret=re.findall('ba*','hyfhfhfubaaakdoeko') #['baaa'] # + # 重复匹配前一个字符1-无穷次 ret=re.findall('ba+','ggdgdgdeyebjdiej') #[] # ? # 重复匹配前一个字符0-1次 ret=re.findall('a?b','aaaaabduhedabidjeidb') #['ab', 'ab', 'b'] # {n}{n,m} # 重复匹配前一个字符n次,或者n-m次 ret=re.findall('a{3}b','aaaaaabbbb') #['aaab'] #{1,}表示1到无穷 #[] # 字符集 取消元字符的特殊功能,三个例外 \,^,- ret=re.findall('a[c,d,e]x','aex') #['aex'] ret=re.findall('[a-z]','hfche') #['h', 'f', 'c', 'h', 'e'] ret=re.findall('[w,*]','degdgewldlkd*jmk') #['w', '*'] #^放在[]里面代表:取反 ret=re.findall('[^3,5]','h3d3m5') #['h', 'd', 'm'] #^放在[n,m]里面代表对所有取反 # \ # 后面跟着元字符去掉特殊功能,后面跟着普通字符实现特殊功能 # \d匹配任何十进制数 [0-9] #\D匹配任何非十进制数 [^0-9] #\s 匹配任何空白字符串 [\t\r\n\f\v] #\S 匹配任何非空白字符串[^\t\r\n\f\v] #\w 匹配任何数字字母字符串[0-9a-zA-Z] #\W 匹配任何非数字字母字符串[^0-9a-zA-Z] #\b 匹配任何特殊字符边界,即指单词和空格间的位置,匹配模式前加r #匹配出满足条件的第一个结果 search函数 ret=re.search('sb','ydgygdsbhujidjsb') print(ret)#<_sre.SRE_Match object; span=(6, 8), match='sb'> print(ret.group())#sb ret=re.search('a\.','ahhfu') #使用\使.含义改变 None # r ret=re.search(r'\bh','hhfue').group()#h #匹配样式前加r是为了告诉python解释器当前转义字符串没有特殊意义,只是普通字符串 # () # 组合使用 ret=re.search('(as)+','dasasjfjka').group() #asas # | # 分组 或者的意思 ret=re.search('(as)|3','3as').group() #3 ret=re.search('(?P<id>\d{3})/(?P<name>\w{3})','cgygyegy132/wdej') print(ret.group())#132/wde print(ret.group('id'))#132 print(ret.group('name'))#wde #?P<name> 固定格式 给选取的组起名 #函数 1.findall #所有匹配到的结果返回到一个列表里面 2.search #返回匹配到的第一个结果对象,对象可以使用group函数返回结果 3.match #只在字符串开始匹配,只返回一个对象,与search类似 4.split #分割字符串 按照匹配的从左往右顺序分割,第二次将第一次分割后的结果再次进行分割 ret=re.split('[a,b]','afebi')#['', 'fe', 'i'] ret=re.split('[a,b]','agydebke')#['', 'gyde', 'ke'] #空字符串也算是分割后的结果 5.sub #替换函数 ret=re.sub('a..x','sb','hdehalexide')#hdehsbide 6.compile #将匹配规则编译为对象, 可以对多个字符串进行同一匹配规则的匹配 obj=re.compile('a..x') ret=obj.findall('jdjalexjdie')#['alex']
浙公网安备 33010602011771号