Ich brauche eine Regex, um alle "& lt;" oder '& gt;' Das sind keine XML-Tags.
Beispiel:
%Vor%Sollte finden
%Vor%Beispiel:
%Vor%Sollte finden
%Vor%Also, irgendwelche Treffer wo '& lt;' oder '& gt;' ist nicht in einem Tag (ja, wir haben auch selbstschließende Tags, die in Betracht gezogen werden sollten:)
Bearbeiten Sie # 2: Ich möchte am Ende alle Übereinstimmungen durch die HTML-kodierten Werte ersetzen.
Bearbeiten Sie # 3:
Also, was ich tun möchte, ist von einem Text, der HTML mit einigen zusätzlichen Tags enthält (sehr wenige bekannte Tags), alle '& lt;' und '& gt;' was nicht in den Tags enthalten ist.
Beispiel (die fettesten, die ich finden möchte, damit ich sie durch ihre codierten Werte ersetzen kann):
%Vor%Ergebnis sollte sein:
%Vor%Irgendeine Idee, wie Sie dieses Problem lösen können?
Dies kann mit Regex geschehen; Es ist jedoch nicht so einfach, wie Sie es vorschlagen. Sie müssen gültige Tags finden und verarbeiten, damit dies funktioniert. Es passiert einfach, dass ich das vor einiger Zeit gemacht habe, als ich einen schnellen und leichten xml / html Parser geschrieben habe. Der Code ist verfügbar unter:
Um den Parser zu verwenden, implementieren Sie die definierte Schnittstelle IXmlLightReader
aus der späteren der beiden Quelldateien. Das folgende Beispiel erzeugt Ihre gewünschten Ergebnisse und behandelt auch einige andere Funktionen, die Sie nicht erwähnt haben, wie CDATA-Abschnitte, Verarbeitungsanweisungen, DTDs usw.
Das vorhergehende Programm gibt die folgenden Ergebnisse aus:
%Vor%Hinweis: Ich habe die XML-Deklaration, CDATA und '& amp;' Text nur zum Testen.
Verwenden Sie eine der Methoden aus Diese Frage und entfernen Sie HTML-Tags der Eingabe
dann
%Vor%Nach Ihrem Beispiel zu urteilen, suchen Sie anscheinend nicht nach XML-Dateien, wie das Thema es vorschlägt, sondern eher nach XML-ähnlichen Dateien - vielleicht Dateien, die XML wären, wenn sie nicht das "& lt;" enthielten. und "& gt;" Zeichen, die Sie suchen.
Aber Sie haben die Aufgabe nicht klar genug angegeben. Was zum Beispiel mit
passieren soll %Vor%oder mit
%Vor%Das Aufheben des zweiten Falles ist ziemlich schwierig (vielleicht unmöglich) mit regulären Ausdrücken alleine zu erreichen. Sie müssen die Grammatik oder die Eingabesprache definieren, die Sie akzeptieren möchten (eine Erweiterung von XML) und sie mit rekursiven Analysetechniken analysieren.
In Ihrem begrenzten Fall scheint es, dass es eine Algorithmus-Strategie gibt, die funktionieren könnte, die wie folgt umrissen werden kann:
<something>
. </something>
<
und >
durch die Escapezeichen. Angesichts der neuen Formulierung Ihres Problems in Edit # 3 könnten Sie es mit einem regulären Ausdruck lösen, der "& lt;" entspricht. gefolgt von einem negativen Lookahead
%Vor% entspricht <
, wenn nicht einer der bekannten Tag-Namen folgt, und ersetzt dann "<"
durch "<"