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

IT技术 javascript regex word-boundary boundary word-boundaries
2021-01-23 17:51:16

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

2个回答

单词边界 ( \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 !
  ^ ^ ^ ^   ^   ^ ^ ^ ^   ^
我以前从未见过对单词边界的如此清晰的解释。很棒的一个!
2021-03-16 17:51:16
好东西。根据我的经验,解释单词边界比使用它们要困难得多
2021-04-03 17:51:16

的基本目的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.