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");
XXXX
和 YYYY
是您要查找的字符的 unicode 值(当然要更改正则表达式以满足您的需要)。
【讨论】:
【参考方案3】:我使用 Unicode 通用类别和命名块来解决这个问题,并在接受的答案下方的简短评论中对其进行了描述:
我试图匹配 ✅ 和 ? 并看到了这个问题。但答案 没有解决我的问题。最后我将它用于正则表达式模式
\pSo
有关命名块和 Unicode 通用类别的更多信息,请访问Microsoft Regular Expression Help Topic。
您可以为 BasicLatin、ExtendedLatin、Arabic、Cyrilic 和...使用不同的名称
还有与S
系列匹配的更具体的符号,例如货币符号或数学符号。
【讨论】:
以上是关于C# 正则表达式匹配表情符号的主要内容,如果未能解决你的问题,请参考以下文章
使用正则表达式查看单元格是不是包含 Google 表格中的表情符号
PHP:如何匹配一系列 unicode 配对代理表情符号/表情符号?