2 Stimmen

Regex ersetzt nur XML-Tag (nicht Inhalt)

Zunächst einmal weiß ich, dass man nicht versuchen sollte, XML mit Regex zu verändern, aber dies ist ein spezieller Fall, in dem ich das sowieso tun muss und keinen Parser verwende.

Ich will das:

<nicetag_A-B>Teststring X-Y</nicetag_A-B>

So soll es aussehen:

<nicetag_>Teststring X-Y</nicetag_>

Kurz gesagt, ich möchte [any letter]-[any-letter] entfernen, aber nur aus dem Tag, nicht aus dem eigentlichen Inhalt.

Dies ist meine bisherige Regex:

Regex.Replace(inputString, @"(<.*?[a-zA-Z])\-([a-zA-Z].*?>)", "$1$2");

Das Problem dabei ist, dass es nur für das obige Beispiel funktioniert. Würde der Tag ohne A-B benannt, würde stattdessen der innere Inhalt (X-Y) ersetzt werden.

Irgendwelche Ideen?

1voto

stema Punkte 85725

Ihr Beispiel funktioniert nicht, es wird nur der Bindestrich im Tag ersetzt.

Versuchen Sie dies hier

(<[^>]*)[a-zA-Z]\-[a-zA-Z]([^>]*)

und ersetzen durch $1$2

Siehe es online hier auf Regexr

0voto

rczajka Punkte 1790

Sie könnten versuchen [^>\s]* (entspricht allem außer > und Leerzeichen) anstelle von .* und versichern Sie sich, dass Sie immer noch im Tag-Namen stehen.

0voto

Ed Harper Punkte 20677

Können Sie nicht einfach die [a-zA-Z]-[a-zA-Z]> con > ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X