re模块

一.简介

     用于string的模糊匹配,而string内置的方法是精确匹配。

二.字符匹配

1  普通字符

       用于精确匹配

2   元字符

     .   ^   $   *   +   ?  { }  |  ( )  \

   .   通配符除\n其余均可匹配

    ^  位置匹配,表示开始   $ 表示结束

import  re
ret=re.findall("^af","afghaf")
print(ret)
ret=re.findall("af$","afdfggaf")
print(ret)

  *,+,?,{}均表示重复次数

  *   0~+oo

+   1~+oo

?   1或0

{n,m} 表示n~m次   {1,}表示1到正无穷

    [ ]一次只能匹配一个,可以表示一个匹配集,又有取消元字符的功能

    [ ]中的特殊字符:\  ^取反  -表示范围

import re
ret = re. findall(  "[^4,5]" ,  "dgg4ffd5dd" )
print(ret)
ret = re. findall("[^a-z,4,5]" ,"sccf5673374"  )
print(ret)

    \:后面跟元字符,去除其特殊化,后面跟普通字符,增加特殊功能。

   \d   \D 表示数字  [0-9]   \s  \S表示空白字符[\t\n\r\f\v]

   \w \W表示[a-zA-Z0-9]   \b匹配一个特殊字符的边界,而不是匹配特殊字符(这里的特殊字符是非字母和数字的)

 

import re
ret = re.findall(r "I\b","hello I am a LI$T")
 print(ret)
ret = re.findall("a\\\\","a\sgvff")#匹配反斜杠
print(ret)

  四个反斜杠,Python解释一个\需要2个\,re模块对这2个\进行转义要4个\。

 

( ):表示分组

import re
ret = re.search("(?p<id>\d{11}),(?p<name>[a-z]*)     ","1445676556777567785ffhtfcg6")



ret1=ret.group("id")
ret2 = ret.group("name")
print(ret1,ret2)

|:表示或者用于分组

 三.re 模块的函数

  1.re.findall(匹配模型,母串)//贪婪匹配找到所有匹配的,返回一个列表。

  2.re.search(匹配模型,母串)#只匹配一个,以对象的形式返回,用group()函数获取对象的内容。

  3,re.match(匹配模型,母串)#同search只不过,仅匹配开始的地方,

  4.group(分组的名称)#该函数可以不带参数,一般与search和match搭配使用。

import re
#5
ret=re.split('[ab]',"abcd")    #先按‘a'进行分割得到’bcd',再对bcd按‘b'进行分割
print(ret) #["","","cd"]
ret=re.sub('\d',"abc","alivf4jhj6",1)    #替换函数,最后一个参数是指定替换几次
print(ret)
ret=re.subn('\d',"abc","alivf4jhj6")    #替换所有满足条件的,并返回替换的次数
print(ret)    #("alivvfabcjhjabc",2)
ret=re.complex("[ab]") #将一种匹配规则转换成一个对象。

四,惰性匹配

  前面的* + ?都是贪婪匹配,后面加上?使其变成惰性匹配。

posted on 2019-10-24 12:01  居一雪  阅读(143)  评论(0编辑  收藏  举报

导航