任何人都可以解釋\ w和\ b正則表達式元字符之間的區別嗎? 這兩個元字符都用於單詞邊界。除此之外,哪一個元字符對多語言內容有效? w和 b正則表達式元字符之間的區別
回答
元字符\b
是一個類似插入符號和美元符號的錨。它匹配的位置稱爲「字邊界」。這場比賽是零長度。
有跡象表明,有資格作爲單詞邊界的三個不同位置:
- 字符串中的第一個字符之前,如果第一個字符是 單詞字符。
- 在字符串中的最後一個字符後面,如果 最後一個字符是單詞字符。
- 字符串中的兩個字符之間,其中一個是單詞字符,另一個不是單詞字符。
簡單地說:\b
允許您使用的\bword\b
形式正則表達式來進行「全字匹配」搜索。A 「單詞字符」是可用於形成單詞的字符。所有不是的字符「單詞字符」都是「非單詞字符」。
在所有的口味中,字符[a-zA-Z0-9_]
都是單詞字符。這些也與短手角色類\w
相匹配。在風味比較中顯示「ascii」的單詞邊界的風味僅將這些識別爲單詞字符。
\w
代表「單詞字符」,通常是[A-Za-z0-9_]
。注意包含下劃線和數字。
\B
是\b
的否定版本。 \B
匹配\b
沒有的每個位置。有效地,\B
匹配兩個單詞字符之間的任意位置以及兩個非單詞字符之間的任意位置。
\W
是的縮寫,\w
的否定版本。
\w
匹配單詞字符。 \b
是一個匹配位置字符的零寬度匹配,該位置字符在一側具有單詞字符,而另一側則不是單詞字符。 (即沒有字字符的事實例包括空格,開始和結束字符串等)
\w
比賽a
,b
,c
,d
,e
和f
在"abc def"
\b
匹配(零-width)a
前位置,c
後,d
之前,和之後在f
"abc def"
@Mahender,你可能是指\W
(而不是\w
)和\b
之間的差異。如果沒有,那麼我會同意上面的@BoltClock和@jwismar。否則繼續閱讀。
\W
會匹配任何非單詞字符,因此很容易嘗試使用它來匹配單詞邊界。問題是它不會匹配行的開始或結束。 \b
更適合匹配單詞邊界,因爲它也會匹配一條線的開始或結束。粗略地說(更有經驗的用戶可以在這裏糾正我)\b
可以被認爲是(\W|^|$)
。 [編輯:如@Ωmega下面提及,\b
是零長度的匹配,從而(\W|^|$)
不是嚴格正確的,但希望有助於解釋DIFF]
快速例如:對於字符串Hello World
,.+\W
將匹配Hello_
(與空間)但不匹配World
。 .+\b
將匹配Hello
和World
。
\w
是不是一個字的邊界,它匹配任何字符,包括下劃線:[a-zA-Z0-9_]
。 \b
是的單詞邊界,即它匹配單詞和非字母數字字符之間的位置:\W
或。
儘管這些實現可能因語言而異。的位置處
\b <= this is a word boundary.
相配後跟一個字字符,但不冠以一個字字符,或由一個字字符之前而不是之後是文字字符。
\w <= stands for "word character".
它總是相匹配的ASCII字符[A-ZA-Z0-9 _]
是否有具體的你要匹配什麼?
一些有用的正則表達式網站初學者或只是爲了弄溼你的胃口。
- http://www.regular-expressions.info
- http://www.javascriptkit.com/javatutors/redev2.shtml
- http://www.virtuosimedia.com/dev/php/37-tested-php-perl-and-javascript-regular-expressions
- http://www.i-programmer.info/programming/javascript/4862-master-javascript-regular-expressions.html
我發現這是一個非常有用的書:
這是一個很好的答案,但記住'\ w'並不總是等同於ASCII字符'[A-Za-z0-9_]' - 它也會匹配字母數字Unicode代碼點,並且可能會如果區域設置適當,則匹配8位ISO-Latin-1字符。 – 2013-12-19 05:14:15
- 1. 2個正則表達式字符串之間的區別
- 2. 正則表達式 -/\ w \ b \ w/
- 3. 正則表達式的區別:(\ w +)?和(\ w *)
- 4. 正則表達式(正則表達式):/ W連字符(javascript)
- 5. js和java之間的正則表達式的區別
- 6. Python和Rubular之間的正則表達式的區別?
- 7. 正則表達式中的*和。*之間的區別(使用python)
- 8. PHP中的正則表達式元字符\ w和\ pL
- 9. C#和JavaScript正則表達式之間的區別?
- 10. 正則表達式:^和\ A之間的區別
- 11. 正則表達式中$ 1和$&之間的區別
- 12. 正則表達式中(。*)和(。*?)之間的區別是什麼?
- 13. 正則表達式[A-Z]和[a-zA-Z]之間的區別
- 14. PCRE:。*和。*之間的區別在正則表達式
- 15. Python中的字符集與re2c正則表達式之間的區別
- 16. \ b和\>,\ <在正則表達式中有什麼區別?
- 17. 'RegExp'和正則表達式的區別?
- 18. \ w和[a-zA-Z]之間的Java正則表達式差異
- 19. 拆分字符串與正則表達式\ w \ w *? \ w +?
- 20. 正則表達式爲「>」符號之間的字符串
- 21. 「。」之間的區別和 「$」 表達式
- 22. 正則表達式選擇元素之間的數字字符串
- 23. Perl正則表達式捕獲錨字之間的字符串
- 24. 這三個正則表達式之間的區別是什麼
- 25. 這兩個正則表達式之間的區別?
- 26. 在正則表達式中,「(\ w){3}」和「(\ w {3})」有什麼區別?
- 27. 數字之間的正則表達式
- 28. 提取其他字符之間字符的正則表達式
- 29. 正則表達式替換字符串之間的字符
- 30. 正則表達式中n個字符之間的字符
'\ w'代表一個單詞*字符*,而'\ b'代表單詞字符和非單詞字符之間的單詞邊界。他們不是一回事。 – BoltClock 2012-08-08 22:41:32