0

有人可以修改此正则表达式以删除示例中的单词:

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

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

应该变成:

<text>extra<words><something>

谢谢

4

1 回答 1

1

这是我使用lookbehinds和back references想出的:

(<[^>]+>)(?<=\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。

于 2013-08-20T19:02:23.497 回答