Diese Regex:
%Vor%Sollte funktionieren. Das Verwenden eines XML-Parsers zum Extrahieren dieses ist Overkill.
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%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.
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.