删除重复文本

时间:2013-08-20 18:52:48

标签: regex

有人可以修改此正则表达式以删除单词,例如:

这不适用于下面的额外内容:(<.+?\/>)(?=\1)

<text><text>extra<words><text><words><something>

应该变成:

<text>extra<words><something>

由于

1 个答案:

答案 0 :(得分:1)

这就是我使用lookbehinds和back-reference提出的:

(<[^>]+>)(?<=\1.*\1)

这将匹配<tag>的任何实例,其前面至少有一个同一<tag>的其他实例。

例如,要在C#中使用它:

var input = "<text><text>extra<words><text><words><something>";
var output Regex.Replace(input, @"(<[^>]+>)(?<=\1.*\1)", "");
Console.WriteLine(output); // <text>extra<words><something>

然而,这在许多正则表达式中都不起作用。例如,JavaScript不支持lookbehinds。