@"(?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.)"
4条答案
按热度按时间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]
等。ttygqcqt2#
我使用Unicode通用类别和命名块来解决这个问题,并在接受的答案下面的简短评论中描述了它:
我试图匹配和🚫,看到了这个问题。但是答案并没有解决我的问题。最后我用这个正则表达式模式
\p{So}
有关命名块和Unicode常规类别的详细信息,请访问Microsoft正则表达式帮助主题。
您可以为BasicLatin,ExtendedLatin,Arabic,Cyrilic和...以及与
S
系列匹配的更具体的符号使用不同的名称,如货币符号或数学符号。46scxncf3#
您应该能够插入unicode代码值来表示它们:
其中
XXXX
和YYYY
是您要查找的字符的unicode值(当然可以根据需要更改正则表达式)。iih3973s4#
\p{So}|\p{Cs}\p{Cs}(\p{Cf}\p{Cs}\p{Cs})*
匹配我试过的所有表情符号,只有那些。StringInfo对于创建模式很有用,在某些情况下可以直接代替regex。
该模式使用unicode类别,如@MohaMad的回答所示。同样,带有注解: