Python爬蟲學習 7 —— 正則表達式

  當我們從HTML text中提取信息時,可以發現很多信息都是有規律的,比如我們要獲得網頁鏈接url、提取網頁中的IP、查詢具有某種規律的字符串。正則表達式就是用於匹配具有某種規律的字符串而產生的,換句話說,正則表達式就是記錄文本規則的代碼。



一、正則表達式介紹

正則表達式:regular expression (RE)
正則表達式是用來簡介表達一組字符串的表達式。
在這裏插入圖片描述
用途:表達文本類型的特徵、同時查找替換一組字符串、匹配字符串的部分或全部



二、正則表達式語法

常用的元字符:匹配數字、英文字母、空格等字符

字符 描述
. 匹配除換行符外的任意字符
\w 匹配字母、數字、下劃線或漢字,等價於[A-Za-z0-9]
\s 匹配任意的空白符(space)
\d 匹配數字(digit)
\b 匹配字符串的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束

常用的限定符:指定重複次數

語法 描述
? 前一字符0次/1次重複
+ 前一字符1次或多次重複
* 前一字符任意次數重複
{n} 擴展前一字符n次
{n, } 擴展前一字符n次或更多次
{m, n} 擴展前一字符m 到 n次

常用反義代碼:排除某些字符

語法 描述
\W 匹配非字母、數字、下劃線或漢字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非數字的字符
\B 匹配非單詞開否/結尾的位置
[^x] 匹配除了x意外的字符
[^abc] 匹配非a非b非c的單個字符

其他常用的操作符

操作符 描述
\ 轉義字符,如\*匹配* ,\\匹配\
[] 字符集,對某個字符給出取值範圍
| 左右表達式任意一個 abc|cba 表示abc或cba
() 分組標記,內部只能有 |

貪婪匹配 與 最小匹配
貪婪:正則表達式儘可能匹配更多的字符,如:用a.b匹配aabab將得到aabab
懶惰:需要儘可能少的匹配,可以在它後面加上一個問號?。如:用a.
?b取匹配aabab得到aab

語法 描述
*? 重複若以此,但儘可能少重複
+? 重複1次或更多次,但儘可能少重複
?? 重複0或1次,但儘可能少重複
{n, m}? 重複n到m次,但儘可能少重複
{n, }? 重複n次以上,但儘可能少重複


三、正則表達式運算符的優先級

正則表達式從左到右進行運算,並遵循優先級順序。不同優先級運算時先高後低。

運算符優先級表

運算符 描述
\ 轉義符
(), (?: ), (?=), [] 圓括號與方括號
*, +, ?, {n}, {n, m} 限定符
^, $, \如何元字符、如何字符 位置和字符匹配
| 或操作


四、正則表達式舉例

easy

RE strings
python+ “python”, “pythonn” “pythonnn”…
py[th]on “pyton”, “pyhon”
py[^t]?hon “pyhon”, “pyahon”, “pybhon”…
py{:2}thon “pthon”, “pyhon”, “pyython”

complex

RE strings
2[0-4]\d 匹配數字字符串200-249
^[A-Za-z]+& 英文字母字符串
^-?\d+& 整數字符串(正負數)
^[1-9][1-9]*$ 正整數字符串
[\u4e00-\u9fa5] 匹配中文字符
\d{3}-\d{8}|\d{4}-\d{7} 電話號碼:0731-6666666


第七篇python爬蟲學習筆記完結啦 cheers 🍻🍻
ps:正則表達式30分鐘入門
參考內容:https://www.bilibili.com/video/av9784617/?p=39

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章