我知道它的\bword\B
行为就像word\B
在 Java 中使用正则表达式。(就匹配引擎而言)
为什么会有可能?如果它是 en 异常(语法异常)不是更合理吗?此外,本教程中的 oracle 也使用它作为解释性示例 ( \bdog\B
)。如果您不知道答案,请随意不回复。提前致谢。
我知道它的\bword\B
行为就像word\B
在 Java 中使用正则表达式。(就匹配引擎而言)
为什么会有可能?如果它是 en 异常(语法异常)不是更合理吗?此外,本教程中的 oracle 也使用它作为解释性示例 ( \bdog\B
)。如果您不知道答案,请随意不回复。提前致谢。
\B
是 的否定版本\b
。在不\B
匹配的每个位置匹配。\b
实际上,\B
匹配两个单词字符之间的任何位置以及两个非单词字符之间的任何位置。
\b
允许您使用\bword\b
. “单词字符”是可用于构成单词的字符。所有不是“单词字符”的字符都是“非单词字符”。更准确地说是\b
在字母数字序列之前和之后匹配
在您的示例中\bdog\B
,它将匹配“doggie”,因为您要求它匹配单词和部分单词。
\bdog\b
将在“doggie”上失败,因为“dog”是整个词,而“doggie”中的“dog”是部分词。
它是有条件的,取决于它所接触的内容。
此外,dog\B
将匹配短语“I have a doggie”中的“dog ”
dog\b
将匹配短语“I have adog gie”中的“dog ”
dog\B
不会匹配短语“I have adog gie”中的“dog ”
\bdog\b
不会匹配短语“I have adog gie”中的“dog ”
但\Bdog\b
会匹配短语“I have adog gie”中的“dog ”
这个 SO answer 提供了详细的解释。