誰かがこの正規表現を変更して、例のように単語を削除できますか?
これは、以下の余分なものでは機能しません: (<.+?\/>)(?=\1)
<text><text>extra<words><text><words><something>
次のようになります。
<text>extra<words><something>
ありがとう
誰かがこの正規表現を変更して、例のように単語を削除できますか?
これは、以下の余分なものでは機能しません: (<.+?\/>)(?=\1)
<text><text>extra<words><text><words><something>
次のようになります。
<text>extra<words><something>
ありがとう
これは、後読みと後方参照を使用して私が思いついたものです。
(<[^>]+>)(?<=\1.*\1)
<tag>
これは、 のインスタンスの前に同じ の他のインスタンスが少なくとも 1 つある場合に一致します<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 は後読みをサポートしていません。