2019年5月25日 re模块

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

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

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

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

^ 是只能从开头进行匹配

$是从结尾开始匹配

*是匹配0到无穷次

+是匹配1到无穷次

?是匹配0到1次 

{}是匹配次数自己指定

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

[]代表 或 作用

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

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

[]中有个^ 代表 非 作用

代表转义  

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

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

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

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

s 匹配任何空白字符 [ fv]

S 匹配任何非空白字符 [^ fv]

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

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

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

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)']

原文地址:https://www.cnblogs.com/python1988/p/10923753.html