目录
作业实验
关于贪婪匹配和懒惰匹配
作业实验
关于re
尝试从以下网页数据中提取歌曲名称、作者、歌曲文件名?
html = '''
经典老歌
经典老歌列表
<ul id="list" class="list-group">
<li data-view="7">
href="/2.mp3" singer="任贤齐">沧海一声笑
href="/3.mp3" singer="齐秦">往事随风
href="/4.mp3" singer="beyond">光辉岁月
href="/5.mp3" singer="陈慧琳">记事本
href="/6.mp3" singer="邓丽君">但愿人长久
ul>
'''
import re#re模块# text =html = '''经典老歌经典老歌列表<ul id="list" class="list-group"><li data-view="7">href="/2.mp3" singer="任贤齐">沧海一声笑href="/3.mp3" singer="齐秦">往事随风href="/4.mp3" singer="beyond">光辉岁月href="/5.mp3" singer="陈慧琳">记事本href="/6.mp3" singer="邓丽君">但愿人长久ul>'''mp = re.findall('\d.[mp][mp]\d',html, re.S)results = re.findall('singer.*?"(.+?)"',html)results2 = re.findall('singer=".*?">(.+?)\n',html, re.S)print(mp)print(results)print(results2)
这一块文本可能不大对,应该是老师布置作业的时候没注意,这个题我就是纯找规律做的
关于贪婪匹配和懒惰匹配
关于 ".*?"和 ".*" 的一些区别。
"."表示 匹配除换行符\n之外的任何单字符,*表示零到n次。
给一个文本是abcdefgcbbb
".*"则表示任意字符出现0或者n次,即贪婪模式。例:a.*c,此时不会匹配abc而是abcdefgc,即从a开始最后一个c
".*?"或者?跟在+后面,就是表示懒惰模式。例:a.*?c就会匹配abc,即匹配a后面的第一次出现的c。与".*?"不同,".+?"表示中间要有一个字符,例a.+?b,不会匹配ab而是匹配abcdefgcb,中间至少有一个字符。