re模块的高级用法¶
1. search¶
re.search函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。
格式:re.search(pattern, string, flags=0)
需求:匹配出文章阅读的次数
1 2 3 4 5 |
|
运行结果:
1 |
|
match()和search()的区别:
match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配;
也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。
如:print(re.match(‘super’, ‘superstition’).span()) 会返回(0, 5)
print(re.match(‘super’, ‘insuperable’)) 则返回None
如:print(re.search(‘super’, ‘superstition’).span())返回(0, 5)
print(re.search(‘super’, ‘insuperable’).span())返回(2, 7)
2. findall¶
re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。
格式:re.findall(pattern, string, flags=0)
需求:统计出相应文章阅读的次数,转发次数,评论次数
1 2 3 4 5 |
|
运行结果:
1 |
|
3. sub¶
使用re替换string中每一个匹配的子串后返回替换后的字符串。
格式:re.sub(pattern, repl, string, count)
需求:将匹配到的阅读次数加1
方法1:
1 2 3 4 5 |
|
运行结果:
1 |
|
方法2:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
运行结果:
1 2 |
|
练习¶
从下面的字符串中取出文本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
参考答案:
1 |
|
4. split¶
按照能够匹配的子串将string分割后返回列表。
可以使用re.split来分割字符串,如:re.split(r'\s+', text);将字符串按空格分割成一个单词列表。
格式:re.split(pattern, string[, maxsplit])
需求:切割字符串“info:xiaoZhang 33 shandong”
1 2 3 4 5 |
|
运行结果:
1 |
|