35

与单词边界相比,正则表达式 (\B) 中的非单词边界是什么?

4

2 回答 2

93

单词边界 ( \b) 是一个零宽度匹配,可以匹配:

  • 在单词字符 ( \w) 和非单词字符 ( \W) 之间或
  • 在单词字符和字符串的开头或结尾之间。

在 Javascript 中,\wis[A-Za-z0-9_]\Wis 的定义是其他任何东西。

的否定版本\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 !
  ^ ^ ^ ^   ^   ^ ^ ^ ^   ^
于 2010-12-27T20:28:21.847 回答
4

的基本目的non-word-boundary是创建一个正则表达式,它说:

  • 如果我们在 a word char( \w= [a-zA-Z0-9_]) 的开头/结尾,请确保前一个/下一个字符也是 a word char

    例如:"a\B.""a\w"

    "ab", "a4", "a_", ... 但不是"a ","a."

  • 如果我们在 a non-word char( \W= [^a-zA-Z0-9_]) 的开头/结尾,请确保前一个/下一个字符也是 a non-word char

    例如:"-\B.""-\W"

    "-.", "- ", "--", ... 但不是"-a","-1"

因为word-boundary它是相似的,但不是确保相邻的字符属于同一类(word char/ non-word car),它们需要不同,因此命名为word's boundary.

于 2015-06-02T12:29:12.270 回答