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

2024-06-07 05:07:12 发布

您现在位置:Python中文网/ 问答频道 /正文

\b✅\bdo不匹配单个表情符号:'✅'.

\b\u2B07\bdo不匹配:'⬇️'.

\b-\b不匹配'-'

\bfoo\b当然匹配“foo”

为什么会发生这样的事情,还有什么别的方法来确保我的表情或任何特殊的字符不在字符串

的中间?

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


Tags: 方法字符串httpscomfoo字符事情游乐场
1条回答
网友
1楼 · 发布于 2024-06-07 05:07:12

您可以使用以下模式:

(?<!\w)✅(?!\w) 

这将使用负环视来匹配两边都没有单词字符的表情符号

您询问匹配的原因是\b是零宽度边界,其中边界的一侧是\w(单词字符,或[0-9A-Za-z_]),另一侧是字符串的开头或结尾或\W(非单词字符)

例如,考虑字符串^ {< CD5>}:

start of string boundary (zero width)
     |
     |   non-word character
     |   |
     v   v
      foo.
      ^ ^
      | |
word characters

由于{}和{}字符之间的边界以及字符串开头和字符{}之间的边界,可以在regex{}中使用\b边界并查找匹配项

"foobar"\bfoo\b不匹配,因为第二个ob不满足边界条件,即b不是非单词字符或字符串结尾

模式\b-\b与字符串"-"不匹配,因为"-"不是单词字符。类似地,emojis是从非单词字符构建的,因此它们不会像单词字符那样响应边界,就像\bfoo\b一样

相关问题 更多 >