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