1. 程式人生 > >【PHP篇】正則表示式

【PHP篇】正則表示式

$rex=”/gg*d/i”表示匹配到g(G)開始d(D)結束且中間只能有G(D)出現任意次,不區分大小寫

 

1、  定界符號:(1)/ 內容 / (2)|| (3){  } (4)等除字母、數字、“\”以外的字元//必須成對出現

 

2、  內容裡存在原子:原子是匹配單元,必須存在

 

可以為列印字元:[a-z]、[A-Z]、等可見字元

 

可以為非列印字元:鍵盤的回車對應\n匹配

 

轉義字元:如點代表所有字元所有可用\.表示點,其他如【/】、【?】等

 

函式:preg_quote($字串1)//會將字串1中所有可轉義的字元轉義後返回新字串

 

特殊符號字元:所有數字【\d】、所有非數字【\D】、任意一個字(a-z,A-Z,下劃線)【\w】、

任意非字【\W】、任意一個原子【.】(點)

所有空白(空格、tab鍵、換行)【\s】、任意非空白【\S】

 

自定義:[字元1字元2字元3]//也可為[a-zA-Z]區間//匹配任意一個// ^為取反,寫在中括號內

 

3、  內容裡存在原子符:對原子的修飾補充

 

【*】修飾前面的單個原子可以出現任意次//如goodxgooodxgd 正則可寫為:/go*d/

 

【+】修飾前面的單個原子至少要出現1次//如上 不可匹配gd

 

【?】修飾前面的單個原子只能出現0次或者1次

 

【{ n }】修飾前面的單個原子只能出現n次

 

【{a,b}】修飾前面的單個原子只能出現  [ a , b ]  次 //至少兩次{2,  }

 

【|】修飾兩邊字串任意誰整體出現,/intelligent|diligent/

 

【^字元1】必須以字元1開始,/^xceee/必須以xceee為開始,寫在表示式最前面

 

【$字元2】必須以字元2結尾,/\Aaa.*wo$/必須以aa開始和wo為結束,.*表示任意

 

【\A和\Z】開始和結束,以上相同,但不可配合修正符【m】使用,只能表示最前與最後

 

【\b】單詞邊界(空格),/\bare\b/,匹配字串“ware are xxx”匹配到are單詞,

 

【\B】單詞邊界以外的部分

 

【()】改變優先順序,/t(r|x)ol/,可匹配trol或者txol

以小變大:/tel*/表示l可出現任意次=>/t(el)*/表示el可出現任意次

用於取出:/t(el)(.*)/如"xxwtelelllll"輸出telelllll  el  elllll

可在表示式中用\1或者$1直接取第一個值

 

4、  內容修正符:對定界符內容的修正,寫在定界符外右邊

 

【i】不區分大小寫,/teL/i可匹配tel、Tel、TEL 等

 

【m】換行後不示為不同行,預設將\n換行示為以上一行為同一行,/^aa/使用有區別

 

【A】同\A相同匹配開頭,以【m】無法同步使用

 

【s】修正表示式中【.】可匹配回車\n,如/a.*art/s匹配"I am \nsmart"

 

【x】忽略正則表示式內容裡所寫的空白間隔,去掉空字元而已

 

【U】取消開始和結束符以最大範圍取值,如"awobaisb"使用"/a.*b/"輸出awobaisb

使用/a.*b/U或/a.*?b/取消貪婪則會輸出:awob和aisb

 

5、  替換內容1:preg_replace($正則字串,“替換值”,$原字串);//返回替換後的字串

 

正則字串:/\Aaa.*wo$/ 如"aadongwo"

 

可在替換值中用\1或者$1直接取第一個值(dong)

 

6、  替換內容2:

                  

7、  分割內容:preg_split($正則字串,$原字串);//以正則字串為分割符,返回陣列

                         正則字串如:"/[.,?na]/"表示可以以點、逗號、問好、字母n、字母a作為分隔符

 

 

8、  獲取匹配值:preg_match_all($正則字串,$原字串,$返回結果陣列);

//查詢無則返回失敗(false),成功則結果存在$返回結果陣列

//preg_match()獲取一次,引數相同

 

9、  獲取陣列匹配值:preg_grep($正則字串,$原字串陣列);//返回匹配上的新字串陣列