正規表示式 b詳解

2022-03-15 12:43:07 字數 1275 閱讀 5674

今天剛剛開始看正規表示式就遇到乙個十分頭疼的問題,原文是這樣的:

「不幸的是,很多單詞裡包含hi這兩個連續的字元,比如him,history,high,hi/\等等。用hi來查詢的話,這裡邊的hi也會被找出來。如果要精確地查詢hi這個單詞的話,我們應該使用\bhi\b。

\b是正規表示式規定的乙個特殊**(好吧,某些人叫它元字元,metacharacter),代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是\b並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置」

問題來了,什麼叫只匹配乙個位置????

要知道是乙個單詞的開頭,這個\b是去匹配開頭的分隔符還是匹配開頭的第乙個字母??

從網上找到了這樣一句話:「如果需要更精確的說法,\b匹配這樣的位置:它的前乙個字元和後乙個字元不全是(乙個是,乙個不是或不存在)\w(匹配字母或數字或下劃線或漢字)」

這句話很隱晦的說出了是去匹配第乙個字母,而不是去匹配分割符(我這說的匹配分隔符和上邊說的不去匹配任何乙個分隔符並不矛盾,因為我經過實驗已經進本猜出了乙個單詞兩邊只要沒有數字、字母、漢字、下劃線就可以認為是獨立單詞,我說的匹配分隔符是去判斷單詞前乙個字元是不是在這四個之外,是的話就認為是單詞開頭)

再加上下邊的兩個例子就可以很清晰的理解這句很隱晦的話。

引用microsoft vbscript regular expression

dim myreg as regexp

set myreg = new regexp

myreg.pattern = "a\b.h."

print myreg.test("a,chia")

輸出的結果為true 說明是匹配的a,而不是,

dim myreg as regexp

set myreg = new regexp

myreg.pattern = "a.* \b h.*"

print myreg.test("a,chia")

輸出的結果為false 說明匹配的是h,而不是c

這兩個例子非常有助於理解\b的真實含義,希望對大家有幫助!

接下來就是我保證目前網路中沒有的內容了!!!!還有兩點需要說明:

1、\b只能匹配字母、數字、漢字、下劃線

2、\b就近匹配,比如\bab 匹配a,ab\b 匹配b;但如果只寫乙個\b或者在兩個字母、數字、漢字、下劃線之間有\b時就在所有字元或者兩個字母、數字、漢字、下劃線之間所有字元去逐個匹配

相信如果你能看懂我上面所寫的東西,對於\b的使用算是沒有任何問題了!對正規表示式的學習有乙個好的開始和基礎!

正規表示式 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 匹配這樣的...