在文本中出现的所有表情符号中,我想捕捉草莓表情符号 (🍓)。
使用 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 的支持最少,因此您有两个选择:
文字草莓:
/🍓/
UTF-16(大端):
/\uD83C\uDF53/
像 python 这样的语言有更多的支持,你可以使用上面小表中的任何选项和适当的转义:
'\N{草莓}'
'\U0001F353'
'\uD83C\uDF53'
'🍓'
所有这些都等同于文字草莓字形:这些转义由解释器解析,而不是正则表达式引擎。
关键是 Unicode 是一个非常有据可查的资源。它可能看起来很复杂,而且经常是这样,但从长远来看,您会发现查找适当的文档总是比详尽的猜测和检查更容易。
我强烈推荐阅读 Python's Unicode HowTo .它并不详尽,但却是一份极好的资源,可以为您指明所有正确的方向。
关于regex - 使用正则表达式捕获单个表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68960879/