C# 正则表达式:删除除表情符号以外的所有内容。怎样?

C# 正则表达式:删除除表情符号以外的所有内容。怎样?,c#,regex,sentiment-analysis,emoticons,C#,Regex,Sentiment Analysis,Emoticons,如果我有诸如“我爱我的国家:):D.我喜欢我自己:p--。”之类的字符串,那么如何删除除表情符号之外的所有内容?因此生成的字符串应该没有任何文本? 输入字符串或文本可以是任何类型 我用的是正则表达式 Regex.Replace(str, "[A-Za-z]", ""); 但它也删除了:D:p“smiley中的“p”和“D”。那么正则表达式是什么呢 提前谢谢。有很多表情符号,所以你可以。最后是一个非常长且过于复杂的正则表达式。在这种情况下,我认为您只关心更换后的两个“损坏”表情符号。因此,如果是

如果我有诸如“我爱我的国家:):D.我喜欢我自己:p--。”之类的字符串,那么如何删除除表情符号之外的所有内容?因此生成的字符串应该没有任何文本? 输入字符串或文本可以是任何类型

我用的是正则表达式

Regex.Replace(str, "[A-Za-z]", "");
但它也删除了:D:p“smiley中的“p”和“D”。那么正则表达式是什么呢


提前谢谢。

有很多表情符号,所以你可以。最后是一个非常长且过于复杂的正则表达式。在这种情况下,我认为您只关心更换后的两个“损坏”表情符号。因此,如果是这种情况,这应该是可行的:

[ABCE-OQ-Za-oq-z]|(?<!:)D|(?<!:)[Pp]
[ABCE-OQ-Za-OQ-z]|(?

这个正则表达式在ABC上匹配,从E到O的范围,然后是从a到O和从Q到Z的小写字母的Q到Z的范围。正则表达式中的关键部分是,如果匹配的字符前面没有冒号,它只匹配D、p和p。这个特性称为lookaround(或者在这个确切的用例中称为lookback).

哇..这闻起来很复杂。嗯,你应该有一个表情符号数据库(比如数组)然后简单地迭代测试字符串是否包含每个表情。我非常喜欢regex,但我不相信它是这样的。你想保留所有表情吗?问题是,你可以交换:for=并且仍然有相同的表情。此外,一些表情在“眼睛”前有字符,一些上网时间更长的人甚至会添加鼻子i、 例如:D:=D=:-D-:根据上下文的不同,它们并非都是表情符号!例如:D:可能是文件路径的开始。