RegEx, das mit HTML-Tags übereinstimmt und Text extrahiert

7

Ich habe eine Testreihe wie folgt:

%Vor%

Ich möchte eine RegEx verwenden, um den Text zwischen den "customtag" -Tags so zu ändern, dass er so aussieht:

%Vor%

Ich weiß, dass ich einen MatchEvaluator verwenden kann, um den Text zu ändern, aber ich bin mir nicht sicher, welche RegEx-Syntax verwendet werden soll. Jede Hilfe würde sehr geschätzt werden.

    
Jon Tackabury 18.11.2008, 20:01
quelle

5 Antworten

15

Ich würde Regex auch dafür nicht verwenden, aber wenn dieser Ausdruck funktionieren sollte: <customtag>(.+?)</customtag>

    
Tjofras 18.11.2008, 20:10
quelle
7

Ich würde mein eigenes Bein auskauen, bevor ich einen regulären Ausdruck zum Parsen und Ändern von HTML verwende.

Verwenden Sie XSL oder DOM .

Zwei Kommentare haben mich gebeten, zu klären. Die Regulärer-Ausdruck-Substitution funktioniert im speziellen Fall in der OP-Frage, aber im Allgemeinen sind Reguläre Ausdrücke keine gute Lösung. Reguläre Ausdrücke können regulären Sprachen entsprechen, d. H. Eine Sequenz von Eingaben, die von einem endlichen Automaten akzeptiert werden können. HTML kann verschachtelte Tags in beliebiger Tiefe enthalten, daher ist es keine reguläre Sprache.

Was hat das mit der Frage zu tun? Die Verwendung eines regulären Ausdrucks für die OP-Frage, wie sie geschrieben wurde, funktioniert, aber was ist, wenn der Inhalt zwischen den <customtag> -Tags andere Tags enthält? Was passiert, wenn im Text ein Literal < auftritt? Es ist 11 Monate her, seit Jon Tackabury die Frage gestellt hat, und ich vermute, dass in dieser Zeit die Komplexität seines Problems zugenommen hat.

Reguläre Ausdrücke sind großartige Werkzeuge und ich benutze sie die ganze Zeit. Aber sie anstelle eines echten Parsers für Eingaben zu verwenden, die einen brauchen, wird nur in sehr einfachen Fällen funktionieren. Es ist praktisch unvermeidbar, dass diese Fälle über das hinausgehen, was reguläre Ausdrücke bewältigen können. Wenn das passiert, werden Sie versucht sein, einen komplexeren regulären Ausdruck zu schreiben, aber diese werden schnell sehr mühsam zu entwickeln und zu debuggen. Seien Sie bereit, die Lösung für reguläre Ausdrücke zu verwerfen, wenn die Analyseanforderungen erweitert werden.

XSL und DOM sind zwei Standardtechnologien, die für die Arbeit mit XML- oder XHTML-Markup entwickelt wurden. Beide Technologien wissen, wie strukturierte Markup-Dateien analysiert werden, verfolgen verschachtelte Tags und ermöglichen die Transformation von Tags-Attributen oder Inhalt.

Hier sind ein paar Artikel zur Verwendung von XSL mit C #:

Hier sind ein paar Artikel zur Verwendung von DOM mit C #:

Hier ist eine .NET-Bibliothek, die DOM- und XSL-Operationen in HTML unterstützt:

Bill Karwin 18.11.2008 20:04
quelle
1

Wenn zwischen den beiden Tags keine anderen Tags vorhanden sind, ist diese Regex ein wenig sicherer und effizienter:

%Vor%     
Jan Goyvaerts 19.11.2008 07:29
quelle
0

Die meisten Benutzer verwenden HTML Agility Pack für die HTML-Textanalyse. Jedoch finde ich es ein wenig robust und kompliziert für meine eigenen Bedürfnisse. Ich erstelle ein Webbrowser-Steuerelement im Speicher, lade die Seite und kopiere den Text daraus. (siehe Beispiel unten)

Hier finden Sie 3 einfache Beispiele:

Ссылка

    
Jake Drew 18.02.2012 00:15
quelle
0
%Vor%     
sajoshi 20.05.2010 08:31
quelle

Tags und Links