如何删除字符串C#/ Regex中连续出现的模式

时间:2017-01-03 05:33:28

标签: c# regex

我正在处理一个问题,以规范化单词和句子。

例如Yahoooo - > YAHO

Yeeeesssss - >是,

hahahahahaha - >公顷

hello world hello world hello world - >你好世界

基本上任何超过2次的模式都需要标准化为一次。

编辑1:根据以下问题,我添加了更多案例

"你好世界你好你好heheheheheheheheheh" - "你好世界你好你好他"。

"你好世界你好世界你好世界" - "你好世界"。

" aaabbb aaabbb aaabbb" - " ab ab ab" - " ab" (最终输出)。

所以> 2次出现是条件,应该应用所有过滤器(unigram,bigram,trigram直到让5sms表示)。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码:

string input = @"hello world hello hello hehehehehehehehehe aaabbb aaabbb aaabbb";

while(input.Length != (input = Regex.Replace(input, @"(.+)\1{2,}", "$1")).Length);

Console.WriteLine(input);

使用正则表达式(.+)\1{2,}表示匹配一个或多个重复两次或多次的字符。它产生以下输出:

  

hello world hello hello he ab

Run it live