gpt4 book ai didi

javascript -\B 在正则表达式中没有按预期工作

转载 作者:行者123 更新时间:2023-11-28 13:05:55 26 4
gpt4 key购买 nike

/\Bon/ 匹配“中午”中的“on”,/ye\B/ 匹配“可能昨天”中的“ye”。为什么会出现这种情况?

根据以下问题 https://stackoverflow.com/a/6664167/6575810

正如它所说

\B is a zero-width non-word boundary. Specifically:

Matches at the position between two word characters (i.e the position between \w\w) as well as at the position between two non-word characters (i.e. \W\W).

不应该。我在这里遗漏了什么吗?

另请参阅我对 trott 的答案的评论 https://stackoverflow.com/a/46439352/6575810

最佳答案

/\Bon/ matches "on" in "at noon", and /ye\B/ matches "ye" in "possibly yesterday". Why does this happen?

这是正确且预期的行为:

console.log("at noon".match(/\Bon/)[0]);
console.log("possibly yesterday".match(/ye\B/)[0]);

\w 等字符类不同,它匹配单个 "word" character ,或匹配单个空白字符的 \s\Banchor point它不匹配字符,而是断言该 anchor 位于特定位置。在 \B 的情况下,它断言该 anchor 不在字边界处。

单词边界可以是 "word character" 所在的位置。位于空白字符或字符串的开头或结尾旁边。

因此,/\Bon/ 实际上意味着找到一个不在单词开头的“on”。这就是为什么“noon”中的“on”匹配;但像“at one”中的“on”之类的东西则不然:

    console.log("at one".match(/\Bon/));

同样,/ye\B/ 有效地表示查找不在单词末尾的“ye”。因此,“possible yesterday”中的“ye”匹配,因为它不在单词的末尾,而“possible goodbye”末尾的“ye”则不然:

console.log("possibly goodbye".match(/ye\B/));

还需要补充的是,\B 不应与\b 混淆,它们具有不同的含义。 \b 匹配单词边界处的 anchor 。因此,如果您想查找以“on”开头的单词,您可以使用 /\bon/:

console.log("one at noon".match(/\bon/)); // finds the "on" in one, but not the "on" in noon

同样,它可以用于在单词末尾查找某些内容:

    console.log("goodbye yesterday".match(/ye\b/)); // finds the "ye" in goodbye, but not the "ye" in yesterday

关于javascript -\B 在正则表达式中没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46439328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com