0

誰かがこの正規表現を変更して、例のように単語を削除できますか?

これは、以下の余分なものでは機能しません: (<.+?\/>)(?=\1)

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

次のようになります。

<text>extra<words><something>

ありがとう

4

1 に答える 1

1

これは、後読みと後方参照を使用して私が思いついたものです。

(<[^>]+>)(?<=\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 は後読みをサポートしていません。

于 2013-08-20T19:02:23.497 に答える