【问题标题】:Regex: Remove everything except emoticons. how? [duplicate]正则表达式:删除除表情符号之外的所有内容。如何? [复制]
【发布时间】:2013-05-21 13:09:50
【问题描述】:

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

我正在使用正则表达式

Regex.Replace(str, "[A-Za-z]", "");

但它也会删除 ":D :P" 笑脸中的 "P""D"。那么正则表达式会是什么?

提前致谢。

【问题讨论】:

  • 哇.. 这闻起来很复杂。
  • 恕我直言,你应该有一个表情符号的数据库(例如一个数组)并简单地迭代它来测试字符串是否包含每个表情符号。我是 regex 的忠实拥护者,但我不相信它就是这种情况。
  • 问题是,你可以交换 : for = 并且仍然有相同的表情符号。还有一些表情符号在“眼睛”之前有字符,有些上网时间更长的人甚至添加了鼻子,即:D D:=D D=:-D D-:并且根据上下文,并非所有人都是表情符号!例如。 D:可能是文件路径的开始。

标签: c# regex sentiment-analysis emoticons


【解决方案1】:

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

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

这个正则表达式匹配 ABC,从 E 到 O 的范围,然后是从 Q 到 Z 的小写字母它匹配从 a 到 o 和从 q 到 z 的范围。正则表达式中的关键部分是,如果匹配的字符前面没有冒号,它只匹配 D、P 和 p。此功能称为环视(或在此确切用例中称为环视)。

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 2017-08-24
    • 2010-10-16
    • 1970-01-01
    • 2011-09-08
    • 2018-05-26
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多