Posted on 2014-11-04 11:36
S.l.e!ep.¢% 閱讀(1430)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
Skynet
主要摘取自 這里, 正則表達(dá)式測(cè)試采用 這里,? 版權(quán)歸原作者所有
不幸的是,很多單詞里包含
hi這兩個(gè)連續(xù)的字符,比如
him,
history,
high等等。用
hi來(lái)查找的話,這里邊的
hi也會(huì)被找出來(lái)。如果要
精確地查找hi這個(gè)單詞的話,我們應(yīng)該使用
\bhi\b。
\b是正則表達(dá)式規(guī)定的一個(gè)特殊代碼(好吧,某些人叫它元字符,metacharacter),代表著單詞的開(kāi)頭或結(jié)尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標(biāo)點(diǎn)符號(hào)或者換行來(lái)分隔的,但是\b并不匹配這些單詞分隔字符中的任何一個(gè),它只匹配一個(gè)位置。
例子(黃色底表示匹配):
\bhello\b
匹配字符串
hello?world
helloworld
假如你要找的是
hi后面不遠(yuǎn)處跟著一個(gè)Lucy,你應(yīng)該用
\bhi\b.*\bLucy\b。
這里,.是另一個(gè)元字符,匹配除了換行符以外的任意字符。*同樣是元字符,不過(guò)它代表的不是字符,也不是位置,而是數(shù)量——它指定*前邊的內(nèi)容可以連續(xù)重復(fù)使用任意次以使整個(gè)表達(dá)式得到匹配。因此,.*連在一起就意味著任意數(shù)量的不包含換行的字符。現(xiàn)在\bhi\b.*\bLucy\b的意思就很明顯了:先是一個(gè)單詞hi,然后是任意個(gè)任意字符(但不能是換行),最后是Lucy這個(gè)單詞。
\bhello\b.*\bworld\b
hello wor
ld
hello abc world
\d是個(gè)新的元字符,匹配一位數(shù)字(0,或1,或2,或……)。
這里\d后面的{2}({8})的意思是前面\d必須連續(xù)重復(fù)匹配2次(8次)。\d{2}\d{8}
02012345678a
02012345678
. 匹配除換行符以外的任意字符
\w 匹配字母或數(shù)字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數(shù)字
\b 匹配單詞的開(kāi)始或結(jié)束
^ 匹配字符串的開(kāi)始
$ 匹配字符串的結(jié)束
* 與 + 的區(qū)別: 不同的是*匹配重復(fù)任意次(可能是0次),而+則匹配重復(fù)1次或更多次。
例子:
w開(kāi)頭,總長(zhǎng)為7的字母或數(shù)字或下劃線或漢字
^w\b\w{6}\b????? -----> 錯(cuò)誤
^w\w{6}\b??????? -----> 正確
以abc結(jié)束的的字母或數(shù)字或下劃線或漢字
\w*abc$ ------> 正確
\babc\w{6}
wwfdsddfds abcwwwwww
wwfdsddfdsabcwwwwww
abc\w{6}
wwfdsddfds abcwwwwww
wwfdsddfdsabcwwwwww
\babc\b
wwfdsddfds abc wwwwww
wwfdsddfdsabcwwwwww
^表示開(kāi)始
$表示結(jié)束
字符轉(zhuǎn)義
. 用 \.
* 用 \*
\ 用 \\