《Python 3網路爬蟲開發實戰》chapter3
正規表示式
常用的匹配規則
模式 | 描述 |
---|---|
\w | 匹配字母、數字及下劃線 |
\W | 匹配不是字母、數字及下劃線的字元 |
\s | 匹配任意空白字元,等價於[\t\n\r\f] |
\S | 匹配任意非空字元 |
\d | 匹配任意數字,等價於[0-9] |
\D | 匹配任意非數字的字元 |
\A | 匹配字串開頭 |
\Z | 匹配字串結尾,如果存在換行,只匹配到換行前的結束字串 |
\z | 匹配字串結尾,如果存在換行,同時還會匹配換行符 |
\G | 匹配最後匹配完成的位置 |
\n | 匹配一個換行符 |
\t | 匹配一個製表符 |
^ | 匹配一行字串的開頭 |
$ | 匹配一行字串的結尾 |
. | 匹配任意字元,除了換行符,當re.DOTALL標記被指定時,則可以匹配包括換行符的任意字元 |
[…] | 用來表示一組字元,單獨列出,比如[amk]匹配a、m或k |
[^…] | 不在[]中的字元,比如[^abc]匹配除了a、b、c之外的字元 |
* | 匹配0個或多個表示式 |
+ | 匹配1個或多個表示式 |
? | 匹配0個或1個前面的正規表示式定義的片段,非貪婪方式 |
{n} | 精確匹配n個前面的表示式 |
{n,m} | 匹配n到m次由前面正規表示式定義的片段,貪婪方式 |
a\b | 匹配a或b |
( ) | 匹配括號內的表示式,也表示一個組 |
group()與group(1);貪婪匹配與非貪婪匹配
group()
會輸出完整的匹配結果,group(n)
會輸出第n個被()包圍的匹配結果。
.*
是貪婪匹配,會匹配儘可能多的字元。在程式的第6行,.*
後面是\d+,也就是至少一個數字,並沒有指定具體多少個數字,因此,.*
就儘可能匹配多的字元,這裡就把123456匹配了,給\d+留下一個可滿足條件的數字7,最後得到的內容就只有數字7了。
.*?
是非貪婪匹配,在程式的第3行,當.*?
匹配到Hello後面的空白字元時,再往後的字元就是數字了,而\d+恰好可以匹配,那麼這裡的.*?
就不再進行匹配,交給\d+去匹配後面的數字。所以這樣,.*?
匹配了儘可能少的字元,\d+的結果就是1234567了。
需要注意的是,如果匹配的結果在字串結尾,.*?
就有可能匹配不到任何內容了,因為它會匹配儘可能少的字元。如上圖所示。
修飾符
修飾符 | 描述 |
---|---|
re.I | 是匹配對大小寫不敏感 |
re.L | 使本地化識別(locale-aware)匹配 |
re.M | 多行匹配,影響^和$ |
re.S | 使.匹配包含換行在內的所有字元 |
re.U | 根據Unicode字符集解析字元。這個標誌影響\w、\W、\b和\B |
re.X | 該標誌通過給予你更靈活的格式以便你將正規表示式寫的更易於理解 |
例:
result = re.match('^He.*?(\d+).*?Demo$', content, re.S)
轉義匹配
re.match()方法是從字串的開頭開始匹配的,一旦開頭不匹配,那麼整個匹配就失敗了。
re.search()方法,它在匹配時會燒苗整個字串,然後返回第一個成功匹配的結果。如果沒有符合規則的字串,就返回None。
re.findall()方法,該方法會搜尋整個字串,然後返回匹配正規表示式的所有內容。
re.sub()方法:
比如,想要把一串文字的所有數字都去掉,可以藉助sub()方法。
只需要給第一個引數傳入\d+來匹配所有的數字,第二個引數為替換成的字串(如果去掉該引數的話,可以複製為空),第三個引數是原字串。
re.compile()方法可以將正則字串編譯成正規表示式物件,以便在後面的匹配中複用。此外,compile()中還可以傳入修飾符,例如re.S等修飾符,這樣在search()、findall()等方法中就不需要額外傳了。
相關文章
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- Python 3網路爬蟲開發實戰Python爬蟲
- Python3網路爬蟲開發實戰Python爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- python3網路爬蟲開發實戰pdfPython爬蟲
- 《python3網路爬蟲開發實戰》--pyspiderPython爬蟲IDE
- 《Python3網路爬蟲開發實戰》開源啦!Python爬蟲
- [Python3網路爬蟲開發實戰] Charles 的使用Python爬蟲
- [Python3網路爬蟲開發實戰] --Splash的使用Python爬蟲
- 《Python3 網路爬蟲開發實戰》—學習筆記Python爬蟲筆記
- Python3網路爬蟲開發實戰(第二版)Python爬蟲
- Python3網路爬蟲開發實戰——第1章 開發環境Python爬蟲開發環境
- Python網路爬蟲實戰Python爬蟲
- 面前最全《崔慶才python3網路爬蟲開發實戰》Python爬蟲
- 《Python3網路爬蟲開發實戰程式碼》基本庫使用Python爬蟲
- 《Python3網路爬蟲開發實戰》抽獎贈書活動Python爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 2-網頁基礎Python爬蟲網頁
- Python3網路爬蟲開發實戰——第3章 基本庫的使用Python爬蟲
- Python大型網路爬蟲專案開發實戰(全套)Python爬蟲
- 讀書筆記:《Python3網路爬蟲開發實戰》——第2章:爬蟲基礎筆記Python爬蟲
- 我的爬蟲入門書 —— 《Python3網路爬蟲開發實戰(第二版)》爬蟲Python
- Python爬蟲開發與專案實戰 3: 初識爬蟲Python爬蟲
- python3 網路爬蟲開發實戰 貓眼top100Python爬蟲
- 【閱讀筆記】《Python3網路爬蟲開發實戰》PDF文件筆記Python爬蟲
- python3網路爬蟲開發實戰【高清掃描帶目錄】Python爬蟲
- Python3 大型網路爬蟲實戰 001 --- 搭建開發環境Python爬蟲開發環境
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- 《網路爬蟲開發實戰案例》筆記爬蟲筆記
- 網路爬蟲——爬蟲實戰(一)爬蟲
- 【Python爬蟲9】Python網路爬蟲例項實戰Python爬蟲
- python3網路爬蟲開發實戰-線上版-可複製貼上Python爬蟲
- Python 3網路爬蟲開發實戰.PDF分享(可直接下載閱讀)Python爬蟲
- 【Python3網路爬蟲開發實戰】4-解析庫的使用-3 使用pyqueryPython爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 1-HTTP基本原理Python爬蟲HTTP
- Python3網路爬蟲快速入門實戰解析(一小時入門 Python 3 網路爬蟲)Python爬蟲
- python爬蟲實戰教程-Python爬蟲開發實戰教程(微課版)Python爬蟲