正則表達(dá)式 入門

2018-08-04 11:07 更新

從例子開始學(xué)習(xí)正則表達(dá)式是最好的學(xué)習(xí)方法了,先將原先的例子理解通透,在根據(jù)自己的能力對例子進(jìn)行修改、測試,這樣收獲到的東西會多得多。下文中就為您提供了許多簡單且詳細(xì)的例子,希望對您有幫助!

假設(shè)你需要查找一篇英文文章中的hi,那么你可以使用正則表達(dá)式hi。

這幾乎算是最簡單的正則表達(dá)式了,它可以精確匹配這樣的字符串:由兩個字符組成,前一個字符是h,后一個是i。通常,處理正則表達(dá)式的工具會提供一個忽略大小寫的選項,如果選中了這個選項,它可以匹配hi,HI,Hi,hI這四種情況中的任意一種。    

不幸的是,很多單詞里包含hi這兩個連續(xù)的字符,比如him,history,high等等。用hi來查找的話,這里邊的hi也會被找出來。如果要精確地查找hi這個單詞的話,我們應(yīng)該使用\bhi\b。

\b是正則表達(dá)式規(guī)定的一個特殊代碼(好吧,某些人叫它元字符,metacharacter),代表著單詞的開頭或結(jié)尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標(biāo)點符號或者換行來分隔的,但是\b并不匹配這些單詞分隔字符中的任何一個,它只匹配一個位置。

假如你要找的是hi后面不遠(yuǎn)處跟著一個Lucy,你應(yīng)該用\bhi\b.*\bLucy\b。

這里,.是另一個元字符,匹配除了換行符以外的任意字符。*同樣是元字符,不過它代表的不是字符,也不是位置,而是數(shù)量——它指定*前邊的內(nèi)容可以連續(xù)重復(fù)使用任意次以使整個表達(dá)式得到匹配。因此,.*連在一起就意味著任意數(shù)量的不包含換行的字符?,F(xiàn)在\bhi\b.*\bLucy\b的意思就很明顯了:先是一個單詞hi,然后是任意個任意字符(但不能是換行),最后是Lucy這個單詞。

如果同時使用其它元字符,我們就能構(gòu)造出功能更強大的正則表達(dá)式。比如下面這個例子:

0\d\d-\d\d\d\d\d\d\d\d匹配這樣的字符串:以0開頭,然后是兩個數(shù)字,然后是一個連字號“-”,最后是8個數(shù)字(也就是中國的電話號碼。當(dāng)然,這個例子只能匹配區(qū)號為3位的情形)。

這里的\d是個新的元字符,匹配一位數(shù)字(0,或1,或2,或……)-不是元字符,只匹配它本身——連字符(或者減號,或者中橫線,或者隨你怎么稱呼它)。

為了避免那么多煩人的重復(fù),我們也可以這樣寫這個表達(dá)式:0\d{2}-\d{8}。這里\d后面的{2}({8})的意思是前面\d必須連續(xù)重復(fù)匹配2次(8次)

注解:

  1. 如果需要更精確的說法,\b匹配這樣的位置:它的前一個字符和后一個字符不全是(一個是,一個不是或不存在)\w
  2. 換行符就是'\n',ASCII編碼為10(十六進(jìn)制0x0A)的字符。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號