\b
匹配零長度的字邊界,而不是空格。您正在尋找更多的東西是這樣的:
/first\b.\bsecond/.match('first second')
這將匹配任何字符(.
)first
和second
之間,只要有任何一方單詞邊界。
然而,這不是字邊界是如何常用(因爲沒有必要使用,當你邊界本身相匹配的單詞長度爲零的檢查)。 \b
實質上是在一個單詞字符之後尋找一個非單詞字符;所以,相反,你可以只尋找在first
的t
和s
之間,非字字符second
:
/first\Wsecond/.match('first second')
這是完全一樣的第一個例子......但是,實際上,你可能只是想匹配的空白,並且可以使用這樣的事情:
/first\ssecond/.match('first second')
@WiktorStribiżew的第三個例子顯示的字邊界的最佳使用(開頭和結尾)。這是因爲你之前或之後沒有匹配任何東西,所以零長度測試是有幫助的。否則,上面的例子可以匹配first secondary
之類的東西。最後,我會使用像表達式:
/\bfirst\ssecond\b/.match('first second')
來源
2016-10-12 20:03:28
Sam
見http://stackoverflow.com/questions/39875620/python-regex-words-boundary-with-unexpected-results/39876126#39876126。 '\ b'不匹配空格,'first'和'second'之間有一個。 –
'\ b'通常只用在表達式的開頭或結尾,因爲它在其他地方的用處是有問題的。 – tadman
@tadman在表達式中有''b''可能會有用的機會,但是我很難想象真實世界的用例。類似這樣的用法很有效:'/ [az] \ b [az] /' – Sam