正規表示式之 b

2022-08-01 17:18:10 字數 1266 閱讀 4052

引用網上一段話:

\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

引用網上一段話 b 是正規表示式規定的乙個特殊 好吧,某些人叫它元字元,metacharacter 代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是 b 並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置。如果需要更精確的說法,b 匹配這樣的...