有人可以修改此正则表达式以删除单词,例如:
这不适用于下面的额外内容:(<.+?\/>)(?=\1)
<text><text>extra<words><text><words><something>
应该变成:
<text>extra<words><something>
由于
答案 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。