趣说Python爬虫03--正则表达式

趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式

上回说到Python大星闭关修炼《requests宝典》基础心法七七四九个小时

摊牌了,不装了...

Python大星正式晋级“二级爬者”

趣说Python爬虫03--正则表达式

为了进一步增强自己的功力,

Python大星掏出了秘密武器--《正则心法》。

学会这门独门武器,在“爬者”境界下将如探囊取物。

趣说Python爬虫03--正则表达式

“宫廷玉液酒,一百八一杯,这酒怎么样,看我给你吹”。

先看下正则测试小工具,一般人我不告诉他

http://tool.oschina.net/regex/

小试牛刀:

趣说Python爬虫03--正则表达式

是不是很神奇...

来来来,Python大星传授你一套《正则心法》

趣说Python爬虫03--正则表达式

图1

趣说Python爬虫03--正则表达式

图2

考验你悟性的时候

《正则心法》中我们可以看到:

“斜杠+小写字母”“斜杠+大写字母”语义相反

大写字母的一般是否定语句

这些字母不需要死记硬背,背后都有其自然规律

实在记不住,点击收藏

趣说Python爬虫03--正则表达式

作为"爬虫英语四级”的老玩家,小case

w---world

s---space

d---digital


接下来

我会依次展示《正则心法》奥秘之处

好的“心法”必须衬好的“武器”

re库 了解哈

“正则心法”第一式--match

趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式

当我们用《正则心法》第一式获取到匹配数据

你以为就over了吗?

趣说Python爬虫03--正则表达式

刁钻需求的任务:提取匹配数据中的数字

趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式

^ :匹配一行字符串的开头

\\s :匹配空格

\\d+: 匹配 1 个或多个数字

趣说Python爬虫03--正则表达式

在正则表达式中使用英文括号()

group()group(0)

会提取完整的匹配结果

group(1) 会匹配第一个括号中的子字符串

假如正则表达式后面还有 () 包括的内容,那么可以依次用 group(2)、group(3) 等来获取

“正则心法”第二式--通用匹配

趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式

Python大星纵览群书,发现个重大密码

通配符无一例外的使用

.*

趣说Python爬虫03--正则表达式

“正则心法”第三式--贪婪与非贪婪

● 什么是贪婪匹配?

在贪婪匹配下,. 会匹配尽可能多的字符

趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式

括号中 \\d+

也就是至少一个数字,并没有指定具体多少个数字,

因此,.* 就尽可能匹配多的字符,这里就把 123456 匹配了,

给 \\d + 留下一个可满足条件的数字 7,最后得到的内容就只有数字 7 了。

● 什么又是非贪婪匹配?

非贪婪匹配就是尽可能匹配少的字符

非贪婪匹配的写法是 .*?

趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式

贪婪匹配就是匹配尽可能多的字符

非贪婪匹配就是匹配尽可能少的字符

趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式

“正则心法”第四式--修饰符

当content中含有换行符或者大小写

需要红蓝buff加持--“修饰符”

跟随Python先打红buff-- re.S(匹配包括换行在内的所有字符

趣说Python爬虫03--正则表达式

1234567

再打蓝buff -- re.I(使匹配对大小写不敏感注意:I是i的大写

趣说Python爬虫03--正则表达式

1234567

“正则心法”第五式--转义匹配

说到“转义字符”,万金油“斜杠”来表示

趣说Python爬虫03--正则表达式

<re.match>

“正则心法”第六式--search

前面五式,我们使用的match方法是从字符串的开头开始匹配的,

一旦开头不匹配,那么整个匹配就失败

Python大星传授你新的一招--search

在匹配时,search 方法会依次扫描字符串,直到找到第一个符合规则的字符串,然后返回匹配内容,如果搜索完了还没有找到,就返回 None

趣说Python爬虫03--正则表达式

“正则心法”第七式--findall

第六式 我们能轻松的用search方法获取匹配正则表达式的第一个内容

但是...

当我想要匹配所有符合正则表达式的所有内容呢?

趣说Python爬虫03--正则表达式

['1234567', '7654321']

“正则心法”第八式--sub

除了使用正则表达式提取信息外,有时候还需要借助它来修改文本

趣说Python爬虫03--正则表达式

Python

“正则心法”第九式--compile

最后,Python传授毕生功力

准备好接收了吗?

将正则字符串编译成正则表达式对象,以便在后面的匹配中复用

趣说Python爬虫03--正则表达式
趣说Python爬虫03--正则表达式

呼气,吸气,收!!!

这套《正则心法》

get到了吗?

趣说Python爬虫03--正则表达式


分享到:


相關文章: