正則 (入門篇)
如果你對正則感興趣,讀完這篇文章,一定會有收穫~_^
簡單來說
正則一般代指正規表示式
正規表示式是從"複雜資料"中抽取"有用資料"的公式
寫好正規表示式的兩個要點:
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript 正則入門到掌握JavaScript
- 這是一篇男女老少入門精通咸宜的正則筆記筆記
- 從 例子 開始 入門 正則 表示式(-)
- 正則手記——方法篇
- 第八篇.HFM規則入門(二)
- 正規表示式系列之初級入門篇
- ES6入門之正則的擴充套件套件
- 第七篇.HFM規則入門(一)
- 正則手記——語法篇
- JavaScript正則,看這篇就夠了JavaScript
- 練完這篇就會寫正則
- js表情正則 手機正則 郵箱正則JS
- OPA 重新定義規則引擎-入門篇 (持續更新中)
- Python基礎入門:正則re.sub使用自定義替換方法Python
- llvm入門篇LVM
- Redis 入門篇Redis
- Spark入門篇Spark
- 資深架構師Sum的故事:正則!入門就是這樣簡單架構
- 正則
- PHP入門:常量基本規則PHP
- 第十篇.HFM規則入門(三:深入使用exp函式)函式
- Flutter入門篇(一)Flutter
- Flutter入門篇(二)Flutter
- HBase 基本入門篇
- Spring Security 入門篇Spring
- JS正規表示式入門JS
- Regex 正規表示式入門
- iOS 使用正則判斷輸入型別iOS型別
- 正則_9
- 正則?=用法
- 正則 ?= 用法
- 「python」正則Python
- 正則re
- Javascript正則JavaScript
- 正則化
- py 正則
- 正則匹配規則2
- 正規表示式從入門到入坑