regex - 使用正则表达式捕获单个表情符号

标签 regex unicode

在文本中出现的所有表情符号中,我想捕捉草莓表情符号 (🍓)。

使用 Google 我缩小了我的表达范围

(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])

(\ud83c[\ud000-\udfff])

这将我的搜索范围缩小到更少的表情符号,但仍会捕获其他表情符号:

🍏 🍎 🍐 🍊 🍋 🍌 🍉 🍇 🍈 🍒 🍑 🍍 🍗 🍖 🌭 🍔 🍟 🍕

我发现每个表情符号都有自己的范围和 Unicode,例如草莓 (🍓) 的范围为 6107-6108 和 Unicode (U+1F353),Apple (🍎) 的范围为 6086-6087 和 Unicode (U+1F34E) .

我如何进一步缩小我的正则表达式,以便它捕获单个表情符号而忽略其余部分?

最佳答案

类似unicode-table.com 的资源将提供您需要的有关代码点的所有信息,包括名称、字形表示和最重要的编码。对于草莓,您有以下内容:

Name: Strawberry
Glyph: 🍓
Code: 0x1F353
UTF-8: \xF0 \x9F \x8D \x93
UTF-16(BE): \uD83C \uDF53
UTF-32(BE): \U0001F353

如何表示搜索字符串取决于正则表达式的语言/风格。例如,regex101.com 往往对 Unicode 的支持最少,因此您有两个选择:

  1. 文字草莓:

    /🍓/

  2. UTF-16(大端):

    /\uD83C\uDF53/

像 python 这样的语言有更多的支持,你可以使用上面小表中的任何选项和适当的转义:

  1. '\N{草莓}'
  2. '\U0001F353'
  3. '\uD83C\uDF53'
  4. '🍓'

所有这些都等同于文字草莓字形:这些转义由解释器解析,而不是正则表达式引擎。

关键是 Unicode 是一个非常有据可查的资源。它可能看起来很复杂,而且经常是这样,但从长远来看,您会发现查找适当的文档总是比详尽的猜测和检查更容易。

我强烈推荐阅读 Python's Unicode HowTo .它并不详尽,但却是一份极好的资源,可以为您指明所有正确的方向。

关于regex - 使用正则表达式捕获单个表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68960879/

相关文章:

ruby - 如何使用 ruby​​ 和/或正则表达式获取匹配括号内的所有文本

delphi - 如何使用Delphi XE的TEncoding将西里尔文或ShiftJis文本保存到文件?

delphi - Delphi:使Unicode RAR-Component 2.0

python-3.x - Python3 表情符号字符作为 unicode

python - PyCrypto:使用 RSA 非对称 key 对中文字符进行编码

javascript - 将多行字符串转换为javascript对象

javascript - 正则表达式匹配附加可选单词

javascript - 正则表达式匹配没有 http ://的 <a> 标签

javascript - 删除所有出现的新行和制表符

r - 如何轻松地用 rvest 友好的 UTF-8(十六进制)替换特殊字符