C# 正则表达式匹配表情符号

Posted

技术标签:

【中文标题】C# 正则表达式匹配表情符号【英文标题】:C# regex to match emoji 【发布时间】:2013-01-09 17:46:37 【问题描述】:

我想要一个正则表达式来匹配 C# 中的表情符号字符。如果重要的话,那就是来自 Windows 8 触摸键盘的字符,即。 ??? ??????????

【问题讨论】:

【参考方案1】:

似乎有一个 Emoji-to-Unicode 标准:

http://en.wikipedia.org/wiki/Emoji#Emoji_in_the_Unicode_standard

因此,您可能可以匹配每个 Unicode 范围。例如,要匹配从 U+1F30x 到 U+1F5Fx 的范围,您可以使用 [\u1F30-\u1F5F] 等。

【讨论】:

正则表达式是否支持 5 位 unicode 字符?我正在使用 Expresso 正则表达式测试器,它不明白这些是 5 位数长。 也许这会有所帮助:***.com/questions/364009/… 我想那是不可能的。这些文章的日期是 2008 年,但说基本上不可能超越 \uFFFF。 我试图匹配 ✅ 和 ? 并看到了这个问题。但答案并没有解决我的问题。最后我将它用于正则表达式模式\pSo . @MohaMad 你为什么不把它作为答案发布【参考方案2】:

您应该能够插入 unicode 代码值来表示它们:

Regex regEx = new Regex(@"\uXXXX\uYYYY");

XXXXYYYY 是您要查找的字符的 unicode 值(当然要更改正则表达式以满足您的需要)。

【讨论】:

【参考方案3】:

我使用 Unicode 通用类别和命名块来解决这个问题,并在接受的答案下方的简短评论中对其进行了描述:

我试图匹配 ✅ 和 ? 并看到了这个问题。但答案 没有解决我的问题。最后我将它用于正则表达式模式 \pSo

有关命名块和 Unicode 通用类别的更多信息,请访问Microsoft Regular Expression Help Topic。

您可以为 BasicLatin、ExtendedLatin、Arabic、Cyrilic 和...使用不同的名称 还有与S 系列匹配的更具体的符号,例如货币符号或数学符号。

【讨论】:

以上是关于C# 正则表达式匹配表情符号的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式查看单元格是不是包含 Google 表格中的表情符号

从字符串中提取所有表情符号的正则表达式是啥?

PHP:如何匹配一系列 unicode 配对代理表情符号/表情符号?

如何在golang中使用正则表达式替换字符串中的表情符号

python 在python正则表达式中找到unicode表情符号

将表情符号视为正则表达式中的一个字符[重复]