python - 如何在特殊字符周围使用 \b 边界
问题描述
\b✅\b
不匹配单个表情符号:'✅' 。
\b\u2B07\b
不匹配:'⬇️' 。
\b-\b不匹配'-'。
\bfoo\b
当然匹配'foo'。
为什么会发生这种情况以及确保我的表情符号或任何特殊字符不在字符串中间的替代方法
解决方案
您可以使用以下模式:
(?<!\w)✅(?!\w)
这使用否定环视来匹配两侧没有单词字符的表情符号。
您询问的匹配的原因\b
是零宽度边界,其中边界的一侧是\w
(单词字符或[0-9A-Za-z_]
),另一侧是字符串的开头或结尾或\W
(非单词字符)。
例如,考虑字符串"foo."
:
start of string boundary (zero width)
|
| non-word character
| |
v v
foo.
^ ^
| |
word characters
由于和字符之间的边界以及字符串开头和字符之间的边界,\b
边界可以在正则表达式中使用\bfoo\b
并找到匹配项。o
.
f
"foobar"
不匹配\bfoo\b
,因为第二个o
并且b
不满足边界条件,即b
不是非单词字符或字符串结尾。
该模式\b-\b
与字符串不匹配,"-"
因为"-"
不是单词字符。同样,表情符号是由非单词字符构建的,因此它们不会像单词字符那样响应边界,就像\bfoo\b
.
推荐阅读
- mongodb - 从 js 数组中找到对应的对象,并在 mongodb 聚合中使用它的字段
- workbox - 实现 Workbox 的不同方法?
- unity3d - Unity 无法启动 - 无法建立与 Unity 包管理器本地服务器进程的连接
- python - 如何使用 python 根据 pdf 文本的标题将我的文本字符串拆分为多个部分?
- javascript - 如何将空对象添加到本机构造函数对象
- ios - Swift - 在“应用”按钮单击时保存带有选中按钮的表格视图单元
- python - 如何在matplotlib(python)中组合组图
- node.js - 无法将数据保存到 mongodb
- javascript - Owl Carousel 在主机上的 chrom 上不工作
- tfs - 如何在 TFS Build 中设置变量组变量的值