Regex in java-Frage, multiple-Spiele
Ich bin versucht, mehrere CSS-style code-Blöcke in einem HTML-Dokument. Dieser code wird mit dem ersten, wird aber nicht mit dem zweiten. Welchen code brauche ich zum Spiel der zweiten. Kann ich nur eine Liste der Gruppen, die sich in meinem 'Stil' Klammern? Soll ich anrufen, die 'find' - Methode auf, um das nächste match?
Hier ist mein regex-Muster
^.*(<style type="text/css">)(.*)(</style>).*$
Verwendung:
final Pattern pattern_css = Pattern.compile(css_pattern_buf.toString(),
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
final Matcher match_css = pattern_css.matcher(text);
if (match_css.matches() && (match_css.groupCount() >= 3)) {
System.out.println("Woot ==>" + match_css.groupCount());
System.out.println(match_css.group(2));
} else {
System.out.println("No Match");
}
InformationsquelleAutor Berlin Brown | 2009-01-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standard-Antwort: keine regex zum Parsen von HTML. regex kann nicht analysiert HTML-zuverlässig, egal, wie kompliziert und clever machen Sie Ihren Ausdruck. Es sei denn, Sie absolut sicher sind das genaue format des Zieldokuments ist völlig fixiert, string oder regex-Verarbeitung ist ungenügend, und Sie müssen verwenden Sie einen HTML-parser.
Dass ist ein gieriger Ausdruck. Das (.*) in der Mitte passen so viel wie möglich. Wenn Sie zwei style-Blöcke:
dann wird es gerne mit '1</style> <style type="text/css">2'.
Verwenden (.*?) um einen nicht-gierigen Ausdruck, die es erlauben, die nachfolgende (</style>) zu entsprechen, bei der ersten Gelegenheit.
Ja, und sollten Sie es verwendet haben, um das erste match zu. Das übliche idiom ist:
Beachten Sie, dass die standard-string-Verarbeitung (indexOf, etc) kann ein einfacher Ansatz für Sie als regex, da Sie nur mit ganz festen Zeichenfolgen. Allerdings, die Standard-Antwort noch gilt.
InformationsquelleAutor bobince
Können Sie vereinfachen die regex wie folgt:
Und wenn Sie nicht brauchen, die Gruppen 1 und 3 (wahrscheinlich nicht), würde ich die drop-Klammern, bleibt nur:
InformationsquelleAutor Gumbo