掏出秘密武器 --《正则心法》
学会这门独门武器,在 “爬者” 境界下将如探囊取物
“宫廷玉液酒,一百八一杯,这酒怎么样,看我给你吹”。
先看下正则测试小工具,一般人我不告诉他
http://tool.oschina.net/regex/
小试牛刀:
是不是很神奇...
来来来,Python 大星传授你一套《正则心法》
图 1
图 2
考验你悟性的时候
从《正则心法》中我们可以看到:
“斜杠 + 小写字母” 和 “斜杠 + 大写字母” 语义相反
含大写字母的一般是否定语句
这些字母不需要死记硬背,背后都有其自然规律
实在记不住,点击收藏
作为 " 爬虫英语四级” 的老玩家,小 case
w---world
s---space
d---digital
接下来
我会依次展示《正则心法》的奥秘之处
好的 “心法” 必须衬好的 “武器”
re 库 了解哈
“正则心法” 第一式 --match
当我们用《正则心法》第一式获取到匹配数据,
你以为就 over 了吗?
刁钻需求的任务:提取匹配数据中的数字
^ :匹配一行字符串的开头
s :匹配空格
d+: 匹配 1 个或多个数字
在正则表达式中使用英文括号 ()
group() 和 group(0) 会提取完整的匹配结果
group (1) 会匹配第一个括号中的子字符串
假如正则表达式后面还有 () 包括的内容,那么可以依次用 group (2)、group (3) 等来获取
“正则心法” 第二式 -- 通用匹配
Python 大星纵览群书,发现个重大密码
通配符无一例外的使用 .*
“正则心法” 第三式 -- 贪婪与非贪婪
● 什么是贪婪匹配?
在贪婪匹配下,. 会匹配尽可能多的字符
括号中是 d+,
也就是至少一个数字,并没有指定具体多少个数字,
因此,.* 就尽可能匹配多的字符,这里就把 123456 匹配了,
给 d + 留下一个可满足条件的数字 7,最后得到的内容就只有数字 7 了。
● 什么又是非贪婪匹配?
非贪婪匹配就是尽可能匹配少的字符
非贪婪匹配的写法是 .*?
贪婪匹配就是匹配尽可能多的字符
非贪婪匹配就是匹配尽可能少的字符
“正则心法” 第四式 -- 修饰符
当 content 中含有换行符或者大小写时
需要红蓝 buff 加持 --“修饰符”
跟随 Python 先打红 buff-- re.S(匹配包括换行在内的所有字符)
1234567
再打蓝 buff -- re.I(使匹配对大小写不敏感,注意:I 是 i 的大写)
1234567
“正则心法” 第五式 -- 转义匹配
说到 “转义字符”,万金油 “斜杠” 来表示
“正则心法” 第六式 --search
前面五式,我们使用的 match 方法是从字符串的开头开始匹配的,
一旦开头不匹配,那么整个匹配就失败了
Python 大星传授你新的一招 --search
在匹配时,search 方法会依次扫描字符串,直到找到第一个符合规则的字符串,然后返回匹配内容,如果搜索完了还没有找到,就返回 None。
“正则心法” 第七式 --findall
第六式 我们能轻松的用 search 方法获取匹配正则表达式的第一个内容
但是...
当我想要匹配所有符合正则表达式的所有内容呢?
['1234567', '7654321']
“正则心法” 第八式 --sub
除了使用正则表达式提取信息外,有时候还需要借助它来修改文本
Python
“正则心法” 第九式 --compile
最后,Python 传授毕生功力
准备好接收了吗?
将正则字符串编译成正则表达式对象,以便在后面的匹配中复用
呼气,吸气,收!!!
这套《正则心法》你 get 到了吗?