正则表达式中\ b和\ B之间的区别

正则表达式中\ b和\ B之间的区别

我正在读一本关于正则表达式的书,我遇到了这个例子\b

猫把食物散落在整个房间里。

使用正则表达式- \bcat\b将匹配单词cat而不是catscattered

对于\B作者使用以下示例:

请输入九位数的ID

出现在颜色编码的密钥上。

在单词之间使用正则表达式\B-\B匹配。使用在另一方面相匹配的中和。-color - coded\b-\b-nine-digitpass-key

为什么我们用第一个例子\b来分离cat和在第二个用途\B中分开-?使用\b在第二个例子中做的是什么前面却反其道而行之。

请向我解释一下这个区别。

编辑:此外,任何人都可以用一个新的例子来解释?


jeck猫
浏览 1578回答 3
3回答

慕妹3242003

用不同的例子:考虑这是要搜索的字符串和模式是'cat':text = "catmania thiscat thiscatmaina";现在定义,'\ b'查找/匹配每个单词开头或结尾的模式。'\ B'找不到/匹配每个单词开头或结尾的模式。不同案例:案例1:每个单词的开头result = text.replace(/\bcat/g, "ct");现在,结果是“ctmania thiscat thiscatmaina”案例2:每个单词的结尾result = text.replace(/cat\b/g, "ct");现在,结果是“catmania thisct thiscatmaina”案例3:不是在开始result = text.replace(/\Bcat/g, "ct");现在,结果是“catmania thisct thisctmaina”案例4:不是最后的result = text.replace(/cat\B/g, "ct");现在,结果是“ctmania thiscat thisctmaina”案例5:既不是开始也不是结束result = text.replace(/\Bcat\B/g, "ct");现在,结果是“catmania thiscat thisctmaina”希望这可以帮助 :)

米脂

混乱源于你的思维\b匹配空间(可能是因为“b”表示“空白”)。\b匹配单词开头或结尾的空字符串。&nbsp;\B匹配不在单词开头或结尾的空字符串。这里的关键是“ - ”不是单词的一部分。因此<left>-<right>匹配,\b-\b因为在任何一侧都有单词边界-。另一方面<left> - <right>(注意空格),短划线两侧没有单词边界。单词边界是左右一个空格。另一方面,当搜索\bcat\b单词边界时,行为更直观,并且按预期匹配“cat”。
打开App,查看更多内容
随时随地看视频慕课网APP