regex C#正则表达式匹配emoji

j5fpnvbx  于 2023-04-22  发布在  C#
关注(0)|答案(4)|浏览(268)

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

50pmv0ei

50pmv0ei1#

Emoji-to-Unicode标准:
http://en.wikipedia.org/wiki/Emoji#Emoji_in_the_Unicode_standard
所以你可能可以匹配每个Unicode范围。例如,要匹配从U+1F 30 x到U+1F 5 Fx的范围,你可以使用[\u1F30-\u1F5F]等。

ttygqcqt

ttygqcqt2#

我使用Unicode通用类别和命名块来解决这个问题,并在接受的答案下面的简短评论中描述了它:
我试图匹配和🚫,看到了这个问题。但是答案并没有解决我的问题。最后我用这个正则表达式模式\p{So}
有关命名块和Unicode常规类别的详细信息,请访问Microsoft正则表达式帮助主题。
您可以为BasicLatin,ExtendedLatin,Arabic,Cyrilic和...以及与S系列匹配的更具体的符号使用不同的名称,如货币符号或数学符号。

46scxncf

46scxncf3#

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

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

其中XXXXYYYY是您要查找的字符的unicode值(当然可以根据需要更改正则表达式)。

iih3973s

iih3973s4#

\p{So}|\p{Cs}\p{Cs}(\p{Cf}\p{Cs}\p{Cs})*匹配我试过的所有表情符号,只有那些。
StringInfo对于创建模式很有用,在某些情况下可以直接代替regex。
该模式使用unicode类别,如@MohaMad的回答所示。同样,带有注解:

@"(?x)           # Enable free-spacing-mode (could have used RegexOptions instead)
\p{So}           # Match OtherSymbol, like ⏸ and ✅
|\p{Cs}\p{Cs}    # OR two Surrogate
 \uD83C\p{Cs}    # with color-modifier, like 👍🏿 and 👍
                 # (Hacky special case of Multibyte Character Set? It works.)
|\p{Cs}\p{Cs}    # OR two Surrogate, like 🔀 and 🧊
 (\p{Cf}         # followed by a Format
 \p{Cs}\p{Cs})   # and two Surrogate, like 👩‍💻 and 👨‍💻.
*                # zero or more times (I've only seen none or once.)"

相关问题