在寫正文之前,先容我感嘆一句:《正則表達(dá)式必知必會(huì)》這本書真的是神器!這本書作者的文筆不錯(cuò),講述的內(nèi)容清晰易懂,書上附的例子也比較實(shí)用,看完這本書就算入門了,能很快上手并學(xué)以致用。
-----------------------------------------------------------------------------------------------------------
昨晚和今天看完了書的前5章,也就是基礎(chǔ)部分,總結(jié)一下正則表達(dá)式的基本寫法:
1.最簡單的正則表達(dá)式是一對一的普通文本,也就是你想從一堆文字中尋找our,輸入正則表達(dá)式our,就能自動(dòng)匹配到文字中所有的這個(gè)詞。這里劃重點(diǎn),正則表達(dá)式中的大小寫是嚴(yán)格區(qū)分的,也就是輸入our,并不會(huì)匹配到Our或者OUR之類的。
2.元字符. 表示匹配除換行符(\n、\r)之外的任意單個(gè)字符。比如想匹配our或者out之類的單詞,那么就輸入ou.(當(dāng)然,也能匹配到ou.本身)
3.元字符\?表示轉(zhuǎn)義字符,比如上面的例子中,如果只想匹配ou.本身,就得輸入ou\.
4.元字符[]?這組中括號總是成對出現(xiàn),中括號中的元素表示想匹配的單個(gè)元素的范圍。比如只想匹配our或者out,就輸入ou[tr];想匹配0-9之間的任意數(shù)字,就輸入[0-9];想匹配小寫字母,就輸入[a-z];匹配大寫字母同理為[A-Z];想匹配任意數(shù)字或大小寫字母,就輸入[0-9A-Za-z]
劃重點(diǎn):[A-z]表示的并非只有所有大小寫字母,而是ASCII碼A與z之間的任意字符,還包括一些特殊字符之類的,書上說這個(gè)一般不常用)此外,元字符在[]中使用的時(shí)候,一般不需要進(jìn)行轉(zhuǎn)義
5.元字符-?上面已經(jīng)說過了,表示范圍
6.元字符^?表示排除,比如想匹配除our和out以外的任意含ou的字符,可以寫成ou[^tr],^在匹配范圍非常廣的時(shí)候非常好用
劃重點(diǎn):^只有出現(xiàn)在[]中,且緊跟[ 的時(shí)候才表示排除,出現(xiàn)在別的地方有別的用途
7.空白元字符[\b]?表示退格符,在word文檔這種地方比較好用
8.空白元字符\f?表示換頁符,\n表示換行符,\r表示回車符,\t表示制表符(Tab鍵),\v表示垂直制表符,它們在處理帶格式的文本的時(shí)候非常好用,可以清除空白字符,只保留有內(nèi)容的文字。(\r\n表示一對回車符和換行符的組合,windows系統(tǒng)中把這個(gè)作為每行文本的結(jié)束標(biāo)記)
9.元字符\d?表示0-9間的任意數(shù)字,和[0-9]等價(jià);元字符\D?表示排除0-9間的數(shù)字,和[^0-9]等價(jià)
10.元字符\w?表示任意數(shù)字或大小寫字母或下劃線,和[0-9A-Za-z_]等價(jià);\W和[^0-9A-Za-z_]等價(jià)
11.元字符\s?表示任意空白字符,和[\f\n\r\t\v]等價(jià),但是這里不包含退格符[\b];元字符\S和[^\f\n\r\t\v]等價(jià),這里就包含[\b]?了(簡單來說,\s和\S依然是互為補(bǔ)集的關(guān)系)
12.元字符{}?表示想匹配的單個(gè)字符的次數(shù),比如想匹配o三次,就輸入o{3}。{}中也可以輸入0-9之類的數(shù)字區(qū)間。比如,{1,3}表示次數(shù)大于等于1而小于等于3,{3,}表示次數(shù)大于等于3。
13.元字符+?表示匹配的單個(gè)字符至少重復(fù)1次,等價(jià)于{1,}
14.元字符*?表示匹配的單個(gè)字符至少重復(fù)0次,等價(jià)于{0,}
15.元字符?表示匹配的單個(gè)字符只能重復(fù)0次或1次,等價(jià)于{0,1}
16.量詞+、*、{}是貪婪型,而+?、*?、{}?是它們分別對應(yīng)的懶惰型版本。
例子如下:
想要匹配 “<a>?big </a> and <a>?small </a>”中<a>和</a>之間的內(nèi)容,但是又不想把a(bǔ)nd匹配進(jìn)去,可以這么寫正則表達(dá)式:
<a> .*?<\/a>?這樣匹配到的就會(huì)是兩個(gè)符合條件的字符串:<a>?big </a> 、<a>?small </a>
如果寫成<a> .*<\/a> ,那么匹配結(jié)果將只有一個(gè)字符串,就是<a>?big </a> and <a>?small </a>本身
(上面這個(gè)例子在爬蟲和html語言中非常實(shí)用?。?/p>
到這里,基本的元字符用法就介紹完啦!