Wie wird mit Regular Expression die Zeichensatzzeichenfolge in HTML abgeglichen?

8

HTML-Codebeispiel:

%Vor%

Ich möchte RegEx verwenden, um die Zeichensatzinformationen zu extrahieren (d. h. hier ist es "utf-8")

(Ich benutze C #)

    
silent 11.08.2010, 12:32
quelle

9 Antworten

6

Diese Regex:

%Vor%

Sollte funktionieren. Das Verwenden eines XML-Parsers zum Extrahieren dieses ist Overkill.

    
NullUserException 11.08.2010, 12:57
quelle
14

Meine Antwort bietet eine robustere Version von @ Floyds und, soweit möglich, Adressen @ You's Bruchtest-Fall, wo ein negativer Lookahead verwendet wird, um es zu vermeiden. Es gibt wirklich nur einen relevanten Fall, den ich mir vorstellen kann (eine Variante von @ You's Beispiel), wo es ein falsches positives gibt, aber ich denke, es wäre ziemlich selten. Es wird erwartet, dass Ausdrücke mit dem Flag "case-insensitive" ausgeführt werden und mit java.util.regex und JRegex .

Capture-Gruppen werden automatisch abgeschnitten und enthalten keine Anführungszeichen oder andere Tag-Zeichen wie "/" oder "& gt;". Im zweiten Ausdruck gibt es 2 Capture-Gruppen; der erste ist der Wert vom Inhaltstyp, der leer sein kann (dh wenn charset attribute verwendet wird), und der zweite ist der Zeichensatzwert, der immer nicht leer ist (es sei denn, der Zeichensatzwert wird aus irgendeinem Grund buchstäblich leer gelassen) ).

Regex zum Vergleichen / Gruppieren nur des Zeichensatzwerts - getrimmt, überspringt Anführungszeichen

%Vor%

Wie oben, aber auch / contains content-type (optional) und charset (erforderlich) Werte, getrimmt, überspringt Anführungszeichen. Geringfügiger Vorbehalt - Fehlende Übereinstimmung mit dem Wert des eigenständigen Inhaltstyps, z. B. "text / html"

%Vor%

Testfälle (alle außer dem letzten) ...

%Vor%     
sisu 26.05.2012 20:34
quelle
0

Ich habe versucht mit Javascript die Zeichenfolge in eine Variable zu setzen und eine Übereinstimmung zu machen:

%Vor%     
Zsolti 11.08.2010 12:37
quelle
0

Für PHP:

%Vor%     
Delan Azabani 11.08.2010 12:53
quelle
0

Meine Regex:

%Vor%

Mein Testfall:

%Vor%

C # -Code:

%Vor%

RegEx-Beschreibung:

%Vor%     
Floyd 11.08.2010 14:08
quelle
0

Ich stimme eher mit @You überein, aber ich gebe Ihnen die Antwort, die Sie wünschen, und einige andere Lösungen.

%Vor%

In jedem Fall sollte einer der oben genannten Schritte funktionieren, aber die String.Split-Befehle können gefährlich sein, ohne zuerst zu prüfen, ob das Array Daten enthält. Daher möchten Sie vielleicht das obige ausbrechen, sonst erhalten Sie eine NullException.

    
Brian 11.08.2010 12:58
quelle
0

Dieser reguläre Ausdruck erfasst den Zeichensatz value selbst von jedem Meta-Tag:

%Vor%

Beispieleingabe:

%Vor%

Benutze es so:

%Vor%

Findet diese Werte:

windows-1252

windows-1252

windows-1252

utf-8

iso-8859-1

    
krisdyson 09.05.2012 10:40
quelle
0

Versuchen Sie auch:

%Vor%     
Mikhail Gerasimov 15.07.2012 11:15
quelle
-1

Verwenden Sie keine regulären Ausdrücke für parse (X) HTML ! Verwenden Sie ein geeignetes Werkzeug, d. H. Einen SGML- oder XML-Parser. Ihr Code sieht wie XHTML aus, also würde ich einen XML-Parser ausprobieren. Nach dem Abrufen des Attributs aus dem Meta-Element jedoch; eine Regex wäre angemessener. Allerdings würde nur ein String, der bei ; geteilt wird, den Trick (und auch schneller) tun.

    
You 11.08.2010 12:40
quelle

Tags und Links