import re #匹配通用字符 #w 任意字母/数字/下划线 #W 和小写w相反 #d 十进制数字 #D 除了十进制数以外的值 #s 空白字符 #S 非空白字符 #匹配数字.英文.中文 #数字[0-9] #英文[a-z][A-Z] #中文[u4e00-u9fa5] #元字符 # . 匹配任意字符 除外 # ^ 匹配字符串开始位置 # $ 匹配字符串中结束的位置 # * 重复o,1,n次前面的原子 # ? 重复0,1次前面的原子 # + 重复1,n次前面的原子 #匹配固定次数 #{n}以前的原子出现n次 #{n,}至少出现n次 #{n,m}出现次数介于n-m之间 #多个表达式 | 连接2个正则表达式或用算 #strr="15011143537" #strs="023-110120" #pat=re.compile(r"^1d{10}$|^d{3}-d{6}$",re.I) #print(pat.findall(strs)) #分组 #strr="111<div>test1</div>222<div>test2</div>333" #pat=re.compile(r"<div>(.*?)</div>",re.I) #print(pat.findall(strr)) #贪婪模式和非贪婪模式 #贪婪模式:在整个表达式匹配的前提下,尽可能多的匹配 #非贪婪模式:在整个表达式匹配的前提下,尽可能少的匹配? #python默认是贪婪模式 #compile() --将正则表达式转换为内部格式,提高执行效率 #match和search函数 #match--匹配开头 #search--匹配任意位置 #都只匹配一次 #strr="111<div>test1</div>222<div>test2</div>333" #pat=re.compile(r"<div>(.*?)</div>",re.I) ##加上问号不贪婪,这结果为['test1', 'test2']不加贪婪模式为['test1</div>222<div>test2'] #print(pat.findall(strr)) #findall() 查找所有匹配的内容,装到列表中 #finditer() 查找所有匹配的内容,装到迭代器中 #str="aaa-----jinwei------------jinwei---bbbb" #pat=re.compile(r"jinwei",re.I) #print(pat.findall(str)) #str="aaa-----jinwei------------jinwei---bbbb" #pat=re.compile(r"jinwei",re.I) #data=pat.finditer(str) #for i in data: # print(i.group()) #split() 按照能匹配的子字符串分割后返回列表 #sub() 用于替换 #strr="jinwei1,,,jinwei2,,,jinwei3,,," #pat=re.compile(r",,,",re.I) #print(pat.split(strr)) #strr="jinwei1,,,jinwei2,,,,,,jinwei3,,," #pat=re.compile(r",,,",re.I) #print(pat.sub("---",strr))