引用網上一段話:\b 是正規表示式規定的乙個特殊**(好吧,某些人叫它元字元,metacharacter),代表著單詞的開頭或結尾,也就是單詞的分界處。
雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是 \b 並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置。如果需要更精確的說法,\b 匹配這樣的位置:它的前乙個字元和後乙個字元不全是(乙個是,乙個不是或不存在) \w(數字,字元,下劃線)。很多人不怎麼理解正則中的 \b 含義,看到上面一段話後,很多人還是不怎麼理解 \b 究竟是怎樣的乙個「位置」。今天就來說說我的理解,什麼是位置。
it』s a nice day today.
『i』 佔乙個位置,『t』 佔乙個位置,所有的單個字元(包括不可見的空白字元)都會佔乙個位置,這樣的位置我給它取個名字叫「顯式位置」。注意:字元與字元之間還有乙個位置,例如 『i』 和 『t』 之間就有乙個位置(沒有任何東西),這樣的位置我給它取個名字叫「隱式位置」。「隱式位置」就是 \b 的關鍵!通俗的理解,\b 就是「隱式位置」。
此時,再來理解一下這句話:如果需要更精確的說法,\b 匹配這樣的位置:它的前乙個字元和後乙個字元不全是(乙個是,乙個不是或不存在) \w(數字,字母,下劃線)。我用我的話來翻譯一下這句話:「隱式位置」 \b,匹配這樣的位置:它的前乙個「顯式位置」字元和後乙個「顯式位置」字元不全是 \w。此刻,有沒有一種豁然開朗的感覺?有麼有?有麼有?有麼有?
例項講解就用 「it』s a nice day today.」 舉例說明:
正確的正則:\bnice\b分析:第乙個 \b 前面乙個字元是空格,後面乙個字元是 『n』,不全是 \w,所以可以匹配出 『n』 是乙個單詞的開頭。第二個 \b 前面乙個字元是 『e』,後面乙個字元是空格,不全是 \w,可以匹配出 『e』 是乙個單詞的結尾。所以,合在一起,就能匹配出以 『n』 開頭以 『e』 結尾的單詞,這裡就能匹配出 「nice」 這個單詞。
錯誤的正則:a\bnice分析:我見過有人類似於這樣來寫正則,想要達到的目的是匹配出上乙個單詞以 『a』 結尾,下乙個單詞以 『n』 開頭的部分,這裡想匹配出 「a nice」。但是這個正則表達的可不是這個目的,\b 前面是字元 『a』,後面是字元 『n』,兩個都是「顯式字元」,顯然違背了 \b 的含義,所以這就是個錯誤的表示式,匹配不出任何東西。想要匹配出 「a nice」,正確的正則寫法是:a\b.\bnice(不能換行)
正規表示式 b
b代表字與字中間那個看不見的東西,如 here is a word 那麼,這句中有好幾個 b,每個單詞的前後都有乙個 b.所以你用 bhere b 可以匹配上面這個here,但如果here 不是乙個單詞,而是乙個單詞的一部分,如 adheread,這樣的話,用here 可以匹配,用 bhere b就...
正規表示式 b
引用網上一段話 b 是正規表示式規定的乙個特殊 好吧,某些人叫它元字元,metacharacter 代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是 b 並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置。如果需要更精確的說法,b 匹配這樣的...
正規表示式 b詳解
今天剛剛開始看正規表示式就遇到乙個十分頭疼的問題,原文是這樣的 不幸的是,很多單詞裡包含hi這兩個連續的字元,比如him,history,high,hi 等等。用hi來查詢的話,這裡邊的hi也會被找出來。如果要精確地查詢hi這個單詞的話,我們應該使用 bhi b。b是正規表示式規定的乙個特殊 好吧,...