標籤:案例 第一個字元 obb 技術 從後往前 col 解釋 含義 color
Regex的用於與案例分析
2018-08-24 21:26:14
【說明】:該文主要為了隨後複習和使用備查,由於做了word比較,所以此處博文沒有怎麼排版,沒放代碼,以插入圖片為主,
- 一、Regex之特殊字元
注意:
以下的案例中是match()匹配,match是要求從第一個字元開始匹配,所以,前邊是有.*
- 【1】^ 作用- 以b 開頭匹配的結果
- 【2】$ 作用-任意開頭,以3結尾
注意:下邊這種是不行的,如果沒有*號,就不表示多次了。
表示4為匹配第三位的。點是匹配第二位的。
- 【3】?的作用
- (1)貪婪匹配預設是反向匹配的
貪婪匹配下,是從後往前 開始匹配的。如下例子。
- (2)、在左邊加一個?號則正向匹配
在左邊 加一個?的話,就會從左往右開始匹配。是非貪婪匹配了,但是括弧裡面的仍然是貪婪匹配。【即從左匹配,第一個b被固定了,但是括弧裡的第二個b還是從右開始匹配,。*再輸出中間的一切內容。】
- (3)、在括弧裡也添加括弧,進行非貪婪匹配
#技巧:括弧裡是有問好的,所以在第一個b 確定下後 .*?b是從左往右的
# 輸出是:boooooob
- 【4】、+的作用
簡述以上?的原理
其實,上邊說的從左從右匹配都是一種技巧的規則,其實完全可以按照下邊的這三個符號的含義來解釋。
*表示0次或者多次
+表示1次或者多次
?0次或者是1次
比如:
Line=”booooooobbaaa”
pattern=“.*(b.*b)”這裡的兩處.*都是貪婪匹配模式的,小括弧中的.*【由於*是表示0/1次,】所以匹配出黃色部分的bb。
+的作用:
+其實是表示1次或者是多次的匹配模式的。
比如:對於以下
Line=”booooooobbaaa”
pattern=“.*(b.+b)”就無法匹配成功,因為.+是至少要匹配1個元素的,那麼開頭結尾都是b,中間還要一個元素的情況是沒有的。
那麼比如:
Line=”booooooobabaaa”
pattern=“.*(b.+b)”
就匹配出了結果是bab
【案例分析】
- (1)
- (2)
(3)
- 【5】、{2}的作用、
{1} {2} 表示某一個限定元素的出現此時。
案例分析:
- (1)
(2)
- (3)
- 【6】、{2,}&&{2,5}
1、{2,}表示兩次或以上的輸出
{2,5}
Y與上邊原理相同,表示,大於等於2 小於等於5
- 【7】、| 的用法
這個符號代表或的關係。
特殊括弧的用法
輸出boobb123
- 【8】、[ ]的用法
- 《1》[ ]第一個用法表示中括弧中的任意一個值滿足就進行匹配操作。
案例如下:
- 《2》[0-9]中括弧的第二個含義,可以表示區間。
比如說匹配電話號碼:
Phone_num_pattern=”1[3578][0-9]{9}”
表示,可以匹配13***** /15*****/17*************/18***********的電話號碼,後邊九位是0—9任意,{9}表示9個數字
- 《3》[^1] 的第三個用法。表示中括弧的值不是1 的所有情況匹配
- 《4》[]的第四個用法 [.]中的.就表示一個點了。
- 【9】、\s(小)表示可以匹配空白字元
\s 是匹配空白字元
- 【10】、\S(大) 是匹配除了換行的任何非空白字元的
如果您好中間有多個字元可以用 “(您\S+好)”進行匹配來完成
- 【11】、\w 的用法 【重點】------是與\S(大)比較相似
\w 的含義是[A-Za-z0-9_] 是與\S有區別的,比如\S是可以匹配到+號的
- 【12】、\W 是表示除了[A-Za-z0-9_]之外的所有字元
\W 是表示除了[A-Za-z0-9_]之外的所有字元,它恰好與\w相反的一個匹配功能。
- 【13】、Unicode漢字的提取
提取代碼是 [\u4E00-\u9FA5]+
- 【14】、再次理解貪婪匹配
- 【15】 \d 的用法 是提取出數字
- 【16】、()表示一個組。
- 總結:Regex匯總表
總結案例:【經典案例】
案例一:
案例2 :
python-Regex文法規範與案例