我正在读一本关于正则表达式的书,我遇到了这个例子\b
:
猫把食物散落在整个房间里.
使用正则表达式- \bcat\b
将匹配单词cat
而不是cat
在scattered
.
对于\B
作者使用以下示例:
请输入九位数的ID
出现在颜色编码的密钥上.
在单词之间使用正则表达式\B-\B
匹配.使用在另一方面相匹配的中和.-
color - coded
\b-\b
-
nine-digit
pass-key
为什么我们用第一个例子\b
来分离cat
和在第二个用途\B
中分开-
?使用\b
在第二个例子中做的是什么前面却反其道而行之.
请向我解释一下这个区别.
编辑:此外,任何人都可以用一个新的例子来解释?
and*_*ski 75
混乱源于你的思维\b
匹配空间(可能是因为"b"表示"空白").
\b
匹配单词开头或结尾的空字符串. \B
匹配不在单词开头或结尾的空字符串.这里的关键是" - "不是单词的一部分.因此<left>-<right>
匹配,\b-\b
因为在任何一侧都有单词边界-
.另一方面<left> - <right>
(注意空格),短划线两侧没有单词边界.单词边界是左右一个空格.
另一方面,当搜索\bcat\b
单词边界时,行为更直观,并且按预期匹配"cat".
Boh*_*ian 56
\b
是一个零宽度的单词边界.特别:
在单词字符(与\ w匹配的任何内容)和非单词字符(由[^\w]或\ W匹配的任何内容)之间的位置匹配,以及在字符串的开头和/或结尾处匹配和/或字符串中的最后一个字符是单词字符.
例如:.\b
比赛c
中abc
\B
是一个零宽度的非字边界.特别:
匹配两个单词字符之间的位置(即\ w\w之间的位置)以及两个非单词字符之间的位置(即\ W\W).
例如:\B.\B
比赛b
中abc
有关更多优秀的正则表达式信息,请参阅regular-expressions.info
小智 27
用不同的例子:
考虑这是要搜索的字符串和模式是'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的否定版本.\ B匹配\ b不匹配的每个位置.实际上,\ B匹配两个单词字符之间的任何位置以及两个非单词字符之间的任何位置.
资料来源:http://www.regular-expressions.info/wordboundaries.html
来源\xc2\xa9 版权所有 RexEgg.com
\n\n字边界:\\b*
\n\n单词边界 \\b 匹配一侧是单词字符(通常是字母、数字或下划线\xe2\x80\x94,但请参阅下面的不同引擎的变化)而另一侧不是单词字符(例如,可能是字符串的开头或空格字符)。
\n\n因此,正则表达式 \\bcat\\b 会匹配黑猫中的 cat,但不会匹配紧张症、tomcat 或证书中的猫。删除其中一个边界, \\bcat 将匹配 catfish 中的 cat,而 cat\\b 将匹配 tomcat 中的 cat,但反之则不然。当然,两者都可以单独匹配 cat。
\n\n非单词边界:\\B
\n\n\\B 匹配 \\b 不匹配的所有位置。因此,它匹配:
\n\n\xe2\x9c\xbd 当两边都不是单词字符时,例如在字符串 $=(@-%++) 中的任何位置(包括字符串的开头和结尾)
\n\n\xe2\x9c\xbd 当两边都是单词字符时,例如 Hi! 中的 H 和 i 之间
\n\n这可能看起来不太有用,但有时 \\B 正是您想要的。例如,
\n\n\xe2\x9c\xbd \\Bcat\\B 将发现 cat 完全被单词字符包围,如证书中所示,但既不单独存在,也不位于单词的开头或结尾。
\n\n\xe2\x9c\xbd cat\\B 会在证书和 catfish 中找到 cat,但不会在 tomcat 中或单独找到 cat。
\n\n\xe2\x9c\xbd \\Bcat 会在证书和 tomcat 中找到 cat,但不会在 catfish 中或单独找到 cat。
\n\n\xe2\x9c\xbd \\Bcat|cat\\B 将在嵌入式情况下找到 cat,例如在证书、catfish 或 tomcat 中,但不能单独找到 cat。
\n