花個20分鐘入個門吧,恩
正則表達(dá)式(regular expression)描述了一種字符串匹配的模式,可以用來:(1)檢查一個串中是否含有符合某個規(guī)則的子串,并且可以得到這個子串;(2)根據(jù)匹配規(guī)則對字符串進(jìn)行靈活的替換操作。
正則表達(dá)式規(guī)則:
1. 普通字符
舉例:表達(dá)式 "bcd",在匹配字符串 "abcde" 時,匹配結(jié)果是:成功;匹配到的內(nèi)容是:"bcd";匹配到的位置是:開始于1,結(jié)束于4。(注:下標(biāo)從0開始還是從1開始,因當(dāng)前編程語言的不同而可能不同)
2. 簡單的轉(zhuǎn)義符
表達(dá)式 可匹配
\r, \n 代表回車和換行符
\t 制表符
\\ 代表 "\" 本身
\^ 匹配 ^ 符號本身
\$ 匹配 $ 符號本身
\. 匹配小數(shù)點(diǎn)(.)本身
舉例:表達(dá)式 "\$d",在匹配字符串 "abc$de" 時,匹配結(jié)果是:成功;匹配到的內(nèi)容是:"$d";匹配到的位置是:開始于3,結(jié)束于5。
3. 能夠與 '多種字符' 匹配的表達(dá)式
\d 任意一個數(shù)字,0~9 中的任意一個
\w 任意一個字母或數(shù)字或下劃線,也就是 A~Z,a~z,0~9,_ 中任意一個
\s 包括空格、制表符、換頁符等空白字符的其中任意一個
. 小數(shù)點(diǎn)可以匹配除了換行符(\n)以外的任意一個字符
舉例:表達(dá)式 "\d\d",在匹配 "abc123" 時,匹配的結(jié)果是:成功;匹配到的內(nèi)容是:"12";匹配到的位置是:開始于3,結(jié)束于5。
4. 自定義能夠匹配 '多種字符' 的表達(dá)式
[ab5@] 匹配 "a" 或 "b" 或 "5" 或 "@"
[^abc] 匹配 "a","b","c" 之外的任意一個字符
[f-k] 匹配 "f"~"k" 之間的任意一個字母
[^A-F0-3] 匹配 "A"~"F","0"~"3" 之外的任意一個字符
5. 修飾匹配次數(shù)的特殊符號
{n}
表達(dá)式重復(fù)n次,比如:"\w{2}" 相當(dāng)于 "\w\w";"a{5}" 相當(dāng)于 "aaaaa"
{m,n}
表達(dá)式至少重復(fù)m次,最多重復(fù)n次,比如:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa"
{m,}
表達(dá)式至少重復(fù)m次,比如:"\w\d{2,}"可以匹配 "a12","_456","M12344"...
?
匹配表達(dá)式0次或者1次,相當(dāng)于 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad"
+
表達(dá)式至少出現(xiàn)1次,相當(dāng)于 {1,},比如:"a+b"可以匹配 "ab","aab","aaab"...
*
表達(dá)式不出現(xiàn)或出現(xiàn)任意次,相當(dāng)于 {0,},比如:"\^*b"可以匹配 "b","^^^b"...
舉例:表達(dá)式 "go{2,8}gle" 在匹配 "Ads by goooooogle" 時,匹配的結(jié)果是:成功;匹配到的內(nèi)容是:"goooooogle";匹配到的位置是:開始于7,結(jié)束于17。
6. 其他一些代表抽象意義的特殊符號
^ 與字符串開始的地方匹配,不匹配任何字符
$ 與字符串結(jié)束的地方匹配,不匹配任何字符
\b 匹配一個單詞邊界,也就是單詞和空格之間的位置,不匹配任何字符
舉例:表達(dá)式
".\b." 在匹配 "@@@abc" 時,匹配結(jié)果是:成功;匹配到的內(nèi)容是:"@a";匹配到的位置是:開始于2,結(jié)束于4。
進(jìn)一步說明:"\b" 與 "^" 和 "$" 類似,本身不匹配任何字符,但是它要求它在匹配結(jié)果中所處位置的左右兩邊,其中一邊是 "\w" 范圍,另一邊是 非"\w" 的范圍。