为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

jeck猫 2019-07-30 11:19:21
正则表达式中\ b和\ B之间的区别我正在读一本关于正则表达式的书,我遇到了这个例子\b:猫把食物散落在整个房间里。使用正则表达式- \bcat\b将匹配单词cat而不是cat在scattered。对于\B作者使用以下示例:请输入九位数的ID出现在颜色编码的密钥上。在单词之间使用正则表达式\B-\B匹配。使用在另一方面相匹配的中和。-color - coded\b-\b-nine-digitpass-key为什么我们用第一个例子\b来分离cat和在第二个用途\B中分开-?使用\b在第二个例子中做的是什么前面却反其道而行之。请向我解释一下这个区别。编辑:此外,任何人都可以用一个新的例子来解释?
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

用不同的例子:

考虑这是要搜索的字符串和模式是'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”

希望这可以帮助 :)


查看完整回答
2 反对 回复 2019-07-30
?
米脂

TA贡献1836条经验 获得超3个赞

混乱源于你的思维\b匹配空间(可能是因为“b”表示“空白”)。

\b匹配单词开头或结尾的空字符串。 \B匹配不在单词开头或结尾的空字符串。这里的关键是“ - ”不是单词的一部分。因此<left>-<right>匹配,\b-\b因为在任何一侧都有单词边界-。另一方面<left> - <right>(注意空格),短划线两侧没有单词边界。单词边界是左右一个空格。

另一方面,当搜索\bcat\b单词边界时,行为更直观,并且按预期匹配“cat”。


查看完整回答
反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 1648 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信