在編寫處理字符串的程序或網頁時,常常會有查找符合某些複雜規則的字符串的須要。正則表達式就是用於描述這些規則的語法,正則表達式對於一個程序員來說是相當重要的一個知識點,因此學好正則是每個程序員必須具有的。正則表達式不能獨立使用,它只是一種用來定義字符串的規則模式,必須在相應的正則表達式函數中應用,才能實現對字符串的匹配、查找、替換及分割等操做。
一、正則表達式中包括的元素
(1)、原子(普通字符:a-z A-Z 0-9 、原子表、 轉義字符)
(2)、元字符 (有特殊功能的字符)
(3)、模式修正符 (系統內置部分字符 i 、m、S、U…)
二、正則表達式中的「原子」
①a-z A-Z _ 0-9 //最多見的字符
②(abc) (skd) //用圓括號包含起來的單元符合
③[abcs] [^abd] //用方括號包含的原子表,原子表中的^表明排除或相反內容
④轉義字符
\d 包含全部數字[0-9]
\D 除全部數字外[^0-9]
\w 包含全部英文字符[a-zA-Z_0-9]
\W 除全部英文字符外[^a-zA-Z_0-9]
\s 包含空白區域如回車、換行、分頁等 [\f\n\r]
……
三、正則表達式元字符
* 匹配前一個內容的0次1次或屢次
. 匹配內容的0次1次或屢次,但不包含回車換行
+ 匹配前一個內容的1次或屢次
?匹配前一個內容的0次或1次
| 選擇匹配相似PHP中的| (由於這個運算符合是弱類型致使前面最爲總體匹配)
^ 匹配字符串首部內容
$ 匹配字符串尾部內容
\b 匹配單詞邊界,邊界能夠是空格或者特殊符合
\B 匹配除帶單詞邊界意外內容
{m} 匹配前一個內容的重複次數爲M次
{m,} 匹配前一個內容的重複次數大於等於M次
{m,n} 匹配前一個內容的重複次數M次到N次
( ) 合併總體匹配,並放入內存,可以使用\1 \2…依次獲取
四、模式修正符
模式修正符是爲正則表達式加強和補充的一個功能,使用在正則以外
經常使用修正符
i 正則內容在匹配時候不區分大小寫(默認是區分的)
m 在匹配首內容或者尾內容時候採用多行識別匹配
S 將轉義回車取消是爲單行匹配如. 匹配的時候
x 忽略正則中的空白
A 強制從頭開始匹配
D 強制$匹配尾部無任何內容 \n
U 禁止貪婪匹配 只跟蹤到最近的一個匹配符並結束,經常使用在採集程序上的正則表達式
附:
13個實用的Apache Rewrite重寫規則、
Apache如何開啓rewrite模塊?