与字边界相比,正则表达式(\ B)中的非字边界是什么?
答案 0 :(得分:71)
单词边界(\b
)是可以匹配的零宽度匹配:
\w
)和非单词字符(\W
)或在Javascript中,\w
的定义为[A-Za-z0-9_]
,\W
为其他内容。
\b
的否定版本,写为\B
,是一个零宽度匹配,上面的不保持。因此它可以匹配:
例如,如果字符串为"Hello, world!"
,则\b
在以下位置匹配:
H e l l o , w o r l d !
^ ^ ^ ^
\B
匹配\b
不匹配的地方:
H e l l o , w o r l d !
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
答案 1 :(得分:3)
non-word-boundary
的基本目的是创建一个正则表达式:
如果我们位于word char
(\w
= [a-zA-Z0-9_]
)的开头/结尾,请确保上一个/下一个字符也是word char
,
例如:"a\B."
〜"a\w"
:
"ab"
,"a4"
,"a_"
,...但不是"a "
,"a."
如果我们位于non-word char
(\W
= [^a-zA-Z0-9_]
)的开头/结尾,请确保上一个/下一个字符也是non-word char
,
例如:"-\B."
〜"-\W"
:
"-."
,"- "
,"--"
,...但不是"-a"
,"-1"
对于word-boundary
它是相似的,但不是要确保相邻的字符属于同一类(word char
/ non-word car
),而是需要区别,因此名称word's boundary
。