正则表达式解析 为什么引入正则表达式? (正则匹配)用来匹配一类具有相同规则的字符串 (正则替换)将匹配得到的字符串进行替换 规则: 单字符: . : 除换行以外所有的字符 []:[nxr] [a-z] 匹配中括号中任意一个字符 d:数字 0-9 D:非数字 w:数字,字母,下划线,中文 W:非w s: 所有的空白字符 S:非s 数量修饰: * : 任意多次 >=0 + : 至少一次 >=1 ?: 0次或者1次 {m}: m次 {m,}:至少m次 {m,n}:匹配[m,n]次 边界: , B ^: 以某某开头 $: 已某某结尾 分组: (){4} 视为一个整体 () 1 2 子模式 import re string = '<p><div><span>李四</span></div></p>' # pattern = r'<p>(.*?)</p>' pattern = r'<(w+)><(w+)>w+</2></1>' pattern = re.compile(pattern) result = pattern.search(string) print(result) # <re.Match object; span=(3, 29), match='<div><span> 李四</span></div>'> 贪婪模式: .*? .+? re.I 忽略大小写 re.M 多行匹配 re.S 单行匹配 可以使.匹配任意字符(包括换行符) match/search/findall re.sub(正则表达式,替换的内容(函数),带匹配的字符串) import re def fun(s): # s为正则匹配得到的字符串 ret = int(s.group()) - 10 return str(ret) string = '我喜欢身高为170的女孩' pattern = r'd+' pattern = re.compile(pattern) result = pattern.sub(fun, string) print(result) # 我喜欢身高为160的女孩