猿问

如何在特殊字符周围使用 \b 边界

\b✅\b匹配单个表情符号:“✅”。

\b\u2B07\b匹配:'⬇️'。

\b-\b 与“-”不匹配

\bfoo\b当然匹配“foo”。

为什么会发生这种情况以及确保我的表情符号或任何特殊字符不在字符串中间的替代方法

游乐场: https: //regex101.com/r/jRaQuJ/2


料青山看我应如是
浏览 97回答 1
1回答

尚方宝剑之说

您可以使用该模式:(?<!\w)✅(?!\w)&nbsp;这使用否定环顾来匹配两边都没有单词字符的表情符号。您询问的匹配的原因是\b零宽度边界,其中边界的一侧是\w(单词字符或[0-9A-Za-z_]),另一侧是字符串或\W(非单词字符)的开头或结尾。例如,考虑字符串"foo.":start of string boundary (zero width)&nbsp; &nbsp; &nbsp;|&nbsp; &nbsp; &nbsp;|&nbsp; &nbsp;non-word character&nbsp; &nbsp; &nbsp;|&nbsp; &nbsp;|&nbsp; &nbsp; &nbsp;v&nbsp; &nbsp;v&nbsp; &nbsp; &nbsp; foo.&nbsp; &nbsp; &nbsp; ^ ^&nbsp; &nbsp; &nbsp; | |word characters边界\b可以在正则表达式中使用,并通过和字符之间的边界以及字符串开头和 字符 之间的边界\bfoo\b找到匹配项。o.f"foobar"不匹配,\bfoo\b因为第二个oandb不满足边界条件,即b不是非单词字符或字符串结尾。该模式\b-\b与字符串不匹配,"-"因为"-"不是单词字符。同样,表情符号是由非单词字符构建的,因此它们不会像单词字符那样响应边界,就像 的情况一样\bfoo\b。
随时随地看视频慕课网APP

相关分类

Python
我要回答