python 爬虫之-- 正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
正则表达式非python独有,python 提供了正则表达式的接口,re模块
一、正则匹配字符简介
| 模式 | 描述 |
| \d | 匹配数字 |
| \D | 匹配非数字 |
| \w | 匹配字母数字及下划线 |
| \W | 匹配非字母数字下划线 |
| \s | 匹配任意空白字符 |
| \A | 匹配字符串开始 |
| \Z | 匹配字符串结束,如果存在换行,只匹配到换行前最后一个字符串 |
| \z | 匹配字符串结束 |
| \G | 匹配最后匹配完成的位置 |
| \n | 匹配换行符 |
| \t | 匹配制表符 |
| ^ | 从字符串的开头匹配 |
| $ | 匹配到字符串的末尾 |
| . | 匹配任意字符,换行符除外,但是当re.DOTALL标记被指定时,则可以匹配任意字符 |
| [...] | 用来表示一组字符,例:[abc]匹配'a','b','c' |
| [^...] | 匹配不存在[]中的字符,例[^abc],匹配a,b,c之外的字符 |
| * | 匹配0个或多个的表达式 |
| + | 匹配一个或多个的表达式 |
| ? | 匹配0个或1个有前面的正则表达式定义的片段,非贪婪方式 |
| {n} | 精确匹配n个前面表达式 |
| {n,m} | 匹配n到mci由前面的正则表达式定义的片段,贪婪方式 |
| a|b | 匹配a或者b |
| () | 匹配括号内的表达式,也表示一个组(match,search) |
二、re模块常用的一些方法
re.match(pattern,content,flags)
pattern:匹配规则
content:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
返回结果:匹配到则返回一个match对象,匹配失败返回None
获取对象方法
group(n): 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups():返回一个包含所有小组字符串的元组
span():匹配的起始到结束位置
局限性:1.match方法是从字符串起始位置开始进行匹配,若是起始位置匹配不到则直接结束
2.match 方法匹配到内容后就结束匹配,无法获取多个
实例如下:
import re content="abc123abc234"
result = re.match('abc[0-9]+',content) #从开头匹配
result1 = re.match('bc[0-9]+',content) #不从开头匹配
print 'result=',result.group()
print 'result1=',result1
结果:
result= abc123
result1= None
实例中的abc[0-9]类型,应该有多个,但是因为match 匹配到就直接结束,导致只有一个结果返回,并且result1 由于并不是从开头进行匹配,所以没有结果返回
re.search(pattern,content,flags=0)
与match 相比,search的主要区别是扫描整个字符串去匹配目标。匹配成功后返回
实例如下
import re content="abc123abc234"
result = re.search('abc[0-9]+',content) #从开头匹配
result1 = re.search('bc[0-9]+',content) #不从开头匹配
print 'result=',result.group()
print 'result1=',result1.group()
结果如下
result= abc123
result1= bc123
re.sub(pattern,repl,content,count)
pattern:匹配规则
repl:替换的字符串,也可以为一个函数
content:要被替换查找的字符串
count:替换的次数,默认替换全部
实例
import re content="abc123abc234"
result = re.sub('(abc)','',content,1) #删除abc字符串1次
result1 = re.sub('(abc)','',content) #删除全部abc字符串
print 'result=',result
print 'result1=',result1
结果
result= 123abc234
result1= 123234
实例
import re
def double(match):
vaule = int(match.group())
return str(vaule*2)
content="abc123abc234"
result = re.sub('([0-9])',double,content) #将字符串的数字乘以2
print 'result=',result
结果
result= abc246abc468
re.findall(pattern,content,flags=0)
findall 方法与search的主要差别在与findall 能查找出所有与之匹配的字符串
实例
import re content="abc123abc234"
result = re.findall('([0-9]+)',content) #匹配数字
print 'result=',result
结果
result= ['', '']
以上就是python正则表达式常用的一些方法,以及正则表达是中常用的一些匹配规则
python 爬虫之-- 正则表达式的更多相关文章
- 玩转python爬虫之正则表达式
玩转python爬虫之正则表达式 这篇文章主要介绍了python爬虫的正则表达式,正则表达式在Python爬虫是必不可少的神兵利器,本文整理了Python中的正则表达式的相关内容,感兴趣的小伙伴们可以 ...
- 【Python爬虫】正则表达式与re模块
正则表达式与re模块 阅读目录 在线正则表达式测试 常见匹配模式 re.match re.search re.findall re.compile 实战练习 在线正则表达式测试 http://tool ...
- python爬虫训练——正则表达式+BeautifulSoup爬图片
这次练习爬 传送门 这贴吧里的美食图片. 如果通过img标签和class属性的话,用BeautifulSoup能很简单的解决,但是这次用一下正则表达式,我这也是参考了该博主的博文:传送门 所有图片的s ...
- 【python爬虫和正则表达式】爬取表格中的的二级链接
开始进公司实习的一个任务是整理一个网页页面上二级链接的内容整理到EXCEL中,这项工作把我头都搞大了,整理了好几天,实习生就是端茶送水的.前段时间学了爬虫,于是我想能不能用python写一个爬虫一个个 ...
- Python爬虫运用正则表达式
我看到最近几部电影很火,查了一下猫眼电影上的数据,发现还有个榜单,里面有各种经典和热映电影的排行榜,然后我觉得电影封面图还挺好看的,想着一张一张下载真是费时费力,于是突发奇想,好像可以用一下最近学的东 ...
- Python爬虫之正则表达式(3)
# re.sub # 替换字符串中每一个匹配的子串后返回替换后的字符串 import re content = 'Extra strings Hello 1234567 World_This is a ...
- Python爬虫之正则表达式(1)
廖雪峰正则表达式学习笔记 1:用\d可以匹配一个数字:用\w可以匹配一个字母或数字: '00\d' 可以匹配‘007’,但是无法匹配‘00A’; ‘\d\d\d’可以匹配‘010’: ‘\w\w\d’ ...
- python爬虫之正则表达式
一.简介 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念 ...
- Python爬虫基础——正则表达式
说到爬虫,不可避免的会牵涉到正则表达式. 因为你需要清晰地知道你需要爬取什么信息?它们有什么共同点?可以怎么去表示它们? 而这些,都需要我们熟悉正则表达,才能更好地去提取. 先简单复习一下各表达式所代 ...
随机推荐
- BDFramework.Core 学习
x哥(懂的都懂)的框架, 拿点代码过来做注释. 想了解详情可以去他的github https://github.com/yimengfan/BDFramework.Core # Object file ...
- 【目录】洛谷|CODEVS题解汇总
[动规]爱与愁的心痛 [动规]编辑距离 [动规]采药 [动规]创意吃鱼法 [动规]过河卒 [动规]开心的金明 [动规]旅行 [动规]骑士游历 [动规]数字三角形 [动规]最长连号 [动规]装箱问题 [ ...
- Java实现字符串反转【Leetcode】
Write a function that reverses a string. The input string is given as an array of characters char[]. ...
- multer 基础教程(中文版)
此文档于2016年10月3日翻译时multer的版本是1.2.0,它可能不是最新的! 甚至可能存在翻译错误!你可能需要阅读原版英语README 此文档仅供参考! Multer Multer 是一个 n ...
- CSS3倒影效果
比较简单的倒影效果 <pre><div class="box-reflect"><img src="https://www.baidu.co ...
- fatal error compiling: tools.jar not found
在Eclipse中使用Maven提供的Install(打包)命令插件的时候报错[Fatal error compiling: tools.jar not found]. 报错的原因 报错的原因从错误信 ...
- etcd 开启auth认证
一.概述 1.etcd的v2和v3的认证有些不同,需要分别设置2.Etcd通过用户(user)-角色(role)-权限的方式来控制访问,用户关联角色,角色拥有权限,从而用户也就拥有了相应的权限3.Et ...
- Kubernetes Pod 镜像拉取策略
Kubernetes Pod 镜像拉取策略 官方文档:https://kubernetes.io/docs/concepts/containers/images/ • IfNotPresent:默认值 ...
- Java匹马行天下之学编程的起点——走进编程的殿堂
学编程的起点——走进编程的殿堂 前言: 知其然,知其所以然,努力固然重要,但是思维的提升会让你事半功倍,我会用我花费时间换来的“思维”带更多的朋友入门,让你们明明白白学编程,学编程,不迷茫. 转变思维 ...
- C#循环结构
一.背景: 因编程的基础差,因此最近开始巩固学习C#基础,后期把自己学习的东西,总结相应文章中,有不足处请大家多多指教. 二.简介 有的时候,可能需要多次执行同一块代码.一般情况下,语句是顺序执行的: ...