正則表達式的語法規則


博客轉移到csdn,新地址:http://blog.csdn.net/virus2014/article/details/51217027

 

一、行定位符(^和$)

  行定位符就是用來描述字串的邊界“^”表示行的開始;“$”表示行的結尾。如:

  ^tm : 該表達式表示要匹配字串tm的開始位置是行頭,如tm equal Tomorrow Moon就可以匹配

  tm$ : 該表達式表示要匹配字串tm的位置是行尾,Tomorrow Moon equal tm匹配。

  如果要匹配的字串可以出現在字符串的任意部分,那么可以直接   寫成 :tm

二、單詞定界符(\b、\B)

  單詞分界符\b,表示要查找的字串為一個完整的單詞。如:\btm\b

  還有一個大寫的\B,意思和\b相反。它匹配的字串不能是一個完整的單詞,而是其他單詞或字串的一部分。如:\Btm\B

三、字符類([ ])

  正則表達式是區分大小寫的,如果要忽略大小寫可使用方括號表達式“[]”。只要匹配的字符出現在方括號內,即可表示匹配成功。但要注意:一個方括號只能匹配一個字符。例如,要匹配的字串tm不區分大小寫,那么該表達式應該寫作如下格式:[Tt][Mm]

  POSIX風格的預定義字符類如表所示:

  

四、選擇字符(|)

   還有一種方法可以實現上面的匹配模式,就是使用選擇字符(|)。該字符可以理解為“或”,如上例也可以寫成 (T|t)(M|m),該表達式的意思是以字母T或t開頭,后面接一個字母M或m。

  使用“[]”和使用“|”的區別在於“[]”只能匹配單個字符,而“|”可以匹配任意長度的字串。如果不怕麻煩,上例還可以寫為 :TM|tm|Tm|tM

 

五、連字符(-)

  變量的命名規則是只能以字母和下划線開頭。但這樣一來,如果要使用正則表達式來匹配變量名的第一個字母,要寫為 :[a,b,c,d…A,B,C,D…]

  這無疑是非常麻煩的,正則表達式提供了連字符“-”來解決這個問題。連字符可以表示字符的范圍。如上例可以寫成 :[a-zA-Z]

六、排除字符([^])

  上面的例子是匹配符合命名規則的變量。現在反過來,匹配不符合命名規則的變量,正則表達式提供了“^”字符。這個元字符在前面出現過,表示行的開始。而這里將會放到方括號中,表示排除的意思。

  例如:[^a-zA-Z],該表達式匹配的就是不以字母和下划線開頭的變量名。

七、限定符(? * + {n,m})

  對於重復出現字母或字串,可以使用限定符來實現匹配。限定符主要有6種,如表所示:

  

八、點號字符(.)

  點字符(.)可以匹配出換行符外的任意一個字符

  注意:是除了換行符外的、任意的一個字符。如匹配以s開頭、t結尾、中間包含一個字母的單詞。

  格式如下: ^s.t$,匹配的單詞包括:sat、set、sit等。

  再舉一個實例,匹配一個單詞,它的第一個字母為r,第3個字母為s,最后一個字母為t。能匹配該單詞的正則表達式為:^r.s.*t$

九、轉義字符(\)

  正則表達式中的轉移字符(\)和PHP中的大同小異,都是將特殊字符(如“.”、“?”、“\”等)變為普通的字符。舉一個IP地址的實例,用正則表達式匹配諸如127.0.0.1這樣格式的IP地址。如果直接使用點字符,格式為:[0-9]{1,3}(.[0-9]{1,3}){3}

  這顯然不對,因為“.”可以匹配一個任意字符。這時,不僅是127.0.0.1這樣的IP,連127101011這樣的字串也會被匹配出來。所以在使用“.”時,需要使用轉義字符(\)。修改后上面的正則表達式格式為: [0-9]{1,3}(\.[0-9]{1,3}){3}

十、反斜線(\)

  除了可以做轉義字符外,反斜線還有其他一些功能。反斜線可以將一些不可打印的字符顯示出來,如表所示:

  

  還可以指定預定義字符集,如表所示:

  

  反斜線還有一種功能,就是定義斷言,其中已經了解過了\b、\B,其他如表所示:

  

十一、括號字符(())

  小括號字符的第一個作用就是可以改變限定符的作用范圍,如“|”、“*”、“^”等。來看下面的一個表達式。

  (thir|four)th,這個表達式的意思是匹配單詞thirth或fourth,如果不使用小括號,那么就變成了匹配單詞thir和fourth了。

  小括號的第二個作用是分組,也就是子表達式。如(\.[0-9]{1,3}){3},就是對分組(\.[0-9]{1,3})進行重復操作。后面要學到的反向引用和分組有着直接的關系。

十二、反向引用

十三、模式修飾符

  模式修飾符的作用是設定模式。也就是規定正則表達式應該如何解釋和應用。

  不同的語言都有自己的模式設置,PHP中的主要模式如表所示:

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM