Python大星掏出了秘密武器--《正則心法》
學會這門獨門武器,在“爬者”境界下將如探囊取物
“宮廷玉液酒,一百八一杯,這酒怎么樣,看我給你吹”。
先看下正則測試小工具,一般人我不告訴他
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
“正則心法”第五式--轉義匹配
說到“轉義字符”,萬金油“斜杠”來表示
<re.Matchobject;span=(0,22),match='()www.toutiao.com'>
“正則心法”第六式--search
前面五式,我們使用的match方法是從字符串的開頭開始匹配的,
一旦開頭不匹配,那么整個匹配就失敗了
Python大星傳授你新的一招--search
在匹配時,search方法會依次掃描字符串,直到找到第一個符合規則的字符串,然后返回匹配內容,如果搜索完了還沒有找到,就返回None。
“正則心法”第七式--findall
第六式我們能輕松的用search方法獲取匹配正則表達式的第一個內容
但是...
當我想要匹配所有符合正則表達式的所有內容呢?
['1234567','7654321']
“正則心法”第八式--sub
除了使用正則表達式提取信息外,有時候還需要借助它來修改文本
Python
“正則心法”第九式--compile
最后,Python傳授畢生功力
準備好接收了嗎?
將正則字符串編譯成正則表達式對象,以便在后面的匹配中復用
呼氣,吸氣,收!??!
這套《正則心法》你get到了嗎?