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