★★★re模块

re模块<正则表达式>:给字符串进行模式匹配python

元字符: . ^ $ * + ?{} [] () \正则表达式

1  . :除了换行符其余都可用.代替(一个点表明一个字符,不能表明多个)ide

2 ^ :以...开头spa

3 $ :以...结尾code

4 * :以紧挨着*的字符匹配,重复匹配[0,+∞]【贪婪匹配:尽量多的去匹配】对象

5 + :以紧挨着+的字符匹配,重复匹配[1,+∞]blog

1 re.findall("ahxb*","dasjbahx")---->['ale'] 2 re.findall("ahcb+",'fgjahx')-----[] 3 re.findall("ahxb+","fhsdkjlfahxb")--->['ahxb']

6? :匹配[0,1]次内存

------- 注:*?【惰性匹配,按最小次数进行匹配】字符串

7 {} :{0,}==*;{0,1}==?;{1,}==+;{6}-->重复6次;{1,6}-->重复1~6次【贪婪匹配】it

8 [] :字符集[括号中无特殊符号] 特例:①"q[a-z]"可匹配a-z的字符 ②"q[^a-z]"可匹配除a-z以外的其余字符③ \

1 \d:匹配十进制数字
2 \D:匹配任何非数字
3 \s:匹配任何非空白字符
4 \S:匹配任何非空白字符
5 \w:匹配任何字母数字
6 \W:匹配任何非字母数字
7 \b:特殊字符串边界 空格、#、&等
\详解
1 re.findall(r"I\b","I am ann") #r:不作任何转义送给re模块进行处理
2 ★re.findall("c\\\\l")--->python解释器和re解释器双层解释 python解释器将\\\\解释为\\,re解释器将\\解释为\---->结果为c\l

9: |

re.findall(r"ka|b","sdjasklnka|bs")#--->['ka','b']

10: ():分组以后优先给出括号里面的内容

re.findall("(abc)+","abcabcabc")#--->虽然匹配的是abcabcabc 可是括号里面的(abc)优先被给出即输出结果为['abc']
re.findall("www\.(baidi|123)\.com","www.baidi.com")#['baidu']-->括号里面的内容优先被给出 即baidu
re.findall("(?:abc)+","abcabcabc"#-->输出结果:['abcabcabc'] #--->在括号里面开头加上?:
re.findall("www\.(?:baidu|123)\.com","www.baidu.com")-->['www.baidu.com']

re模块方法:

re.search("[a-z]+","adk456dasjc12").group()#search仅寻找一条信息,并返回 'adk'
re.search("(?P<name>[a-z]+)\d+","dhk12fshdkfnl89").group()#--->'dhk12'
re.search("(?P<name>[a-z]+)\d+","dhk12fshdkfnl89").group("name")#--->'dhk'
re.search("(?P<name>[a-z]+)(?P<age>\d+)","ahd12d9").group("age")-->'12' re.match("\d+","56aq").group()#从开始进行匹配,若不匹配则不返回结果
★★re.split("[ab]","ahccdbh")#--->' ','hccd','h'
re.sub("\d+","A","jaak123ahh5")#--->jaakAAAahhA
re.sub("\d+","A","jaak123ahh5",2)#--->jaakAA3ahh5【2是指匹配前两个】
--->(可用屡次)com=re.compile("\d+") com.findall("fah12dsj9fd")#--->['12','9']
★★re.finditer("\d","fshd56fsdgy78fs")#-->此方法是将结果封装到迭代器里面返回迭代器对象 数据大、结果多能够使用,用一条处理一条,不会将所有的结果一次性加载到内存里 
ret=re.finditer("\d","sasdh45sds89sd6m")
next(ret).group()--->'45'
next(ret).group()--->'89'
#计算"12+(45*9-(2+1)+5*24)"
方法一: print(eval("12+(45*9-(2+1)+5*24)")) 方法二:(正则表达式匹配最里面括号 即最早计算的括号) import re re.findall("\([^()*]\)","12+(45*9-(2+1)+5*24)")#---》['2+1'] #\(--->以(开头 由于在[]中 ()有意义,因此需转化为普通的() #^()--->没有以()开头的 即最里面层 #*--->匹配最里面括号里面的内容 #\)---> 以)结尾
相关文章
相关标签/搜索