2019年5月25日 re模块

正则表达式  可以做 字符串 模糊匹配.

 

普通字符:大多数自负和字母都会和自身匹配

元字符:.^$*+?{}[]|()\

 

. 是通配符  除了\n 换行符 不能代替

^ 是只能从开头进行匹配

$是从结尾开始匹配

*是匹配0到无穷次

+是匹配1到无穷次

?是匹配0到1次 

{}是匹配次数自己指定

*?后面加了一个?代表变成惰性匹配,最小匹配

[]代表 或 作用

[]中c没有特殊符号,eg如果里面有*,那就是个普通*

在字符集中有特殊功能的符号是  -^\

[]中有个^ 代表 非 作用

\ 代表转义  

反斜杠后面跟元字符  去除特殊功能 比如\.

反斜杠 后面跟普通字符实现特殊功能

\d  类似于[0-9]  匹配任何十进制数

\D 相当于[^0-9] 匹配非数字字符

\s 匹配任何空白字符 [\t\n\r\f\v]

\S 匹配任何非空白字符 [^\t\n\r\f\v]

\w 匹配任何字母数字字符 [a-zA-Z0-9]

\W 匹配任何非字母数字字符 [^a-zA-Z0-9]

\b 匹配一个特殊字符边界  比如 空格,&,#等

import re
ret=re.findall('a...x','a123xa122344xa323xxxa')#模糊匹配
print(ret)
ret2=re.findall('\d+','ab2ra32323aadfa44')#\d 寻找数字,进行匹配
print(ret2)
ret3=re.findall('^a...x','afadxdfkadl;fakdxx;a')#从开头开始进行匹配
print(ret3)
ret4=re.findall('a..x$','akalfjadfa23x')# $是从结尾开始处匹配
print(ret4)
ret5=re.findall('d*','afaddddddsasaafdfaddddddaadaddf')
print(ret5)#*代表0到~无穷次
ret6=re.findall('alex+','adfadalexxxx4434adfak')#+代表1到无穷次
print(ret6)
ret7=re.findall('alex*','adfadfaleadfadfa')#*能代表0所以可以没有x,+就不行
print(ret7)
ret8=re.findall('alex?','afalexxxxxxxx')#?将x匹配0~1次,
print(ret8)
ret9=re.findall('alex{6}','akldalexxxxxxx')#重复6次
ret10=re.findall('alex{0,5}','alexxdxx')#重复0到5次
print(ret9,ret10)
ret11=re.findall('alex*?','adfadfaleadfadfa')#  *多加了一个?变成惰性匹配,就是代表最小匹配
print(ret11)

>>>

['a123x', 'a323x']
['2', '32323', '44']
['afadx']
['a23x']
['', '', '', 'dddddd', '', '', '', '', '', '', 'd', '', '', 'dddddd', '', '', 'd', '', 'dd', '', '']
['alexxxx']
['ale']
['alex']
['alexxxxxx'] ['alexx']

 

import re
ret12=re.findall('x[yz]p','xypadfadfaxzp')#[]代表或作用
print(ret12)
ret13=re.findall('q[a-z]','qadfadfqdfadfaeqddaas')#- 代表返回,这里代表26个字母
print(ret13)
ret14=re.findall('q[a-z]*','qabcrdd9')# 后面加个*代表a-z 重复0到无穷次
print(ret14)
ret15=re.findall('q[^a-z]*','q4444abcrdd9')# d代表的是 非,除了a-z以外
print(ret15)
ret16=re.findall('\([^()]*\)','12+(4-5*(4-2))')#首先用[^]取非的方法,取出括号内不含其他括号的元素然后用*取多个
print(ret16) #\ 功能代表转义

》》》

['xyp', 'xzp']
['qa', 'qd', 'qd']
['qabcrdd']
['q4444']
['(4-2)']

posted @ 2019-05-25 20:20  小圣庄  阅读(136)  评论(0编辑  收藏  举报