这里针对 贪婪 和 非贪婪 模式 对数据解析
对re不熟悉的可以看看我前面发的re正则
-
.* : 贪婪 模式 一直匹配下去 .*? : 加 ?号 是 非贪婪 模式 (.*?):分组 ,匹配给定的内容,拿到数据
代码解析
import re
#从开头找
print(re.match("a*", "aaaaab").group())
#非贪婪 加 ?号就是非贪婪
print(re.match("a*?", "aaaaab").group())
str1 = '<meta http-equiv="content-type" content="text/html;charset=utf-8"/>adacc/sd/sdef/24'
result = re.findall(r'<.*>', str1)
print(result)
#查找所有匹配的数据
print(re.findall("\d", "aef5teacher2"))
#替换
print(re.sub("\d", "_", "aef5teacher2"))
#编译
p = re.compile("\d", re.S)
print(p.findall("aef_t5eac5her"))
#re.match(): 从头开始匹配,匹配的规则必须是从字符串开头开始定义规则
str1 = '<meta http-equiv="content-type" content="text/html;charset=utf8"/>adacc/sd/sdef/24'
"""需求:提取content-type"""
# .*?: 匹配任意字符无限次(除去\n),不用去关注数据的长度
result = re.match('<meta http-equiv="(.*?)"', str1)
print(result.group())
print(result.groups())
"""需求:提取utf-8"""
result = re.match('<meta http-equiv="content-type" content="text/html;charset=(.*?)"', str1)
print(result.groups())
# str1 = '<meta http-equiv="content-type" http-equiv="content1-type"content="text/html;charset=utf-8"/>adacc/sd/sdef/24'
# # re.search(): 找到一个匹配结果就返回,匹配的结果:没有 or 有且只有一个
# # 规则可以从任意位置开始
"""需求:提取http-equiv属性值"""
result = re.search('http-equiv="(.*?)"', str1)
print(result.groups())
str1 = '<meta http-equiv="content-type" http-equiv="content1-type"content="text/html";charset="utf-8"/>adacc/sd/sdef/24'
# re.findall(): 将符合规则结果全部返回
# 没有符合正则规则,返回的结果是一个空列表
"""需求:提取http-equiv属性值"""
result = re.findall('http-equiv="(.*?)"', str1)
print(result)
result = re.findall('="(.*?)"', str1)
print(result)
"""
.* : 贪婪 模式 一直匹配下去
.*? : 加 ?号 是 非贪婪 模式
(.*?):分组 ,匹配给定的内容,拿到数据
"""