python–re模块
1、常用例子:
pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'
+ '.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
+ '.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)
items = re.findall(pattern, html) #得到元组
for item in items:
yield {
'index': item[0],
'image': item[1],
'title': item[2],
'actor': item[3].strip()[3:],
'time': item[4].strip()[5:],
'score': item[5] + item[6]
}
例子2
"""
homeworks=s11;s2.id=1004322092;s2.lessons=s12;s2.name="第一讲 人工智能概述"
<class 'list'>: [('1004322092', '第一讲 人工智能概述'), ('1004322093', '第二讲 Python语法串讲'), ('1004322094', '第三讲 Tensorflow框架'), ('1004322095', '第四讲 神经网络优化'), ('1004322096', '第五讲 全连接网络基础'), ('1004322097', '第六讲 全连接网络实践'), ('1004322098', '第七讲 卷积网络基础'),
('1004322099', '第八讲 卷积网络实践'), ('1209059065', '第九讲 课程项目分享')]
"""
获取:
chapter_pattern_compile = re.compile(
r'homeworks=.*?;.+id=(\d+).*?name="(.*?)";')
# 查找所有一级级目录id和name
chapter_set = re.findall(chapter_pattern_compile, source_info_transcoding) #结果是[(),()]
使用:
for index, single_chaper in enumerate(chapter_set):
pass
总结:
1、括号为目标, 2 尽量用非贪婪(.*?),贪婪(.*) :所有的都匹配 3、有换行符 : re.S
2、python 的re模块提供了re.sub用于替换字符串中的匹配项
语法:
re.sub(pattern, repl, string, count=0)
参数:
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。