正則 (入門篇)

z_paul發表於2021-09-09
如果你對正則感興趣,讀完這篇文章,一定會有收穫~_^

簡單來說

正則一般代指正規表示式

正規表示式是從"複雜資料"中抽取"有用資料"的公式


寫好正規表示式的兩個要點:

1.正確匹配字元數量(相關符號:*,+,?,{})

2.正確匹配字元種類(相關符號:除上面符號以外的其它符號^_~)


相關符號

.代表"萬能匹配";//可以匹配除了"n"(換行符)之外的任何單個字元

?代表"不要貪婪";//用在*,+,?後面,表示匹配的越少越好

?也代表"非〇即一";

^代表"除了你";//在中括號內,如[^_]表示單個非下劃線字元

^也代表"匹配首位";

$代表"匹配末位";

*代表"〇至無窮"; //大於等於0的整數

+代表"一至無窮";//大於等於1的整數

|代表"我們都一樣";//|表示"或"


d代表"匹配數字";//0-9

D代表"匹配非d"

w代表"匹配字元";//0-9,A-Z,a-z,_

W代表"匹配非w"


幾個括號

大括號{}用來確定數量

re.match表示正則模組裡面的match函式(match函式預設從字串首部開始匹配),d匹配單個數字{3}代表匹配3個

圖片描述

image.png

中括號[]用來確定匹配字元的種類

第一種寫法

re.match(r"[123]{1}根菸","1根菸")

re.match(r"[123]{1}根菸","2根菸")

re.match(r"[123]{1}根菸","3根菸")

圖片描述

image.png

中括號內的123可匹配單個1或2或3

第二種寫法

re.match(r"[1,2,3]{1}根菸","1根菸")

re.match(r"[1,2,3]{1}根菸","2根菸")

re.match(r"[1,2,3]{1}根菸","3根菸")

圖片描述

image.png

小括號()用來為表示式整體匹配後,"按需提取"(經常和函式group配合使用)

如提取域名中的片語(以簡書域名為例)

re.match(r".*//.*?.+(.*?).+[^.]*","").group(1)

圖片描述

image.png

什麼是貪婪匹配?

  • 貪婪的總是嘗試匹配儘可能多的字元;(大多程式語言的正則預設貪婪)

  • *,?,+,{m,n}後面加上即可使貪婪變成非貪婪.

寫在最後

  • 正規表示式相當於程式設計的小九九,背的時候有點噁心,但用起來非常爽!

  • 正規表示式,最早用於唯一標示覆雜的神經網路,現可用於"唯一標示"某個字串,也就是"唯一匹配"字串

  • 正規表示式使用了大量的特殊字元,這些特殊字元在不同的語境下還會有不同的含義,所以正則的表示式看起來有點像亂碼(表象無序的亂碼,底層極致的規範)



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/75/viewspace-2804107/,如需轉載,請註明出處,否則將追究法律責任。

相關文章