正則表達式的用法與案例分析 2018-08-24 21:26:14 【說明】:該文主要為了隨後複習和使用備查,由於做了word文檔筆記,所以此處博文沒有怎麼排版,沒放代碼,以插入圖片為主, 一、正則表達式之特殊字元 註意: 以下的案例中是match()匹配,match是要求從第一個字元開始匹配,所以 ...
正則表達式的用法與案例分析
2018-08-24 21:26:14
【說明】:該文主要為了隨後複習和使用備查,由於做了word文檔筆記,所以此處博文沒有怎麼排版,沒放代碼,以插入圖片為主,
-
一、正則表達式之特殊字元
-
註意:
以下的案例中是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】、()表示一個組。
-
總結:正則表達式彙總表
-
總結案例:【經典案例】
-
案例一:
-
案例2 :
-