# Erklärung für Pattern



## oldshoe (31. Mrz 2009)

Hallo,
wäre wirklich sehr nett wenn mir mal jemand kurz den Sinn und die Funktion der Class Pattern in Java erklären würde.

Was macht z.B.:
Pattern p =
                Pattern.compile("<a\\s+href\\s*=\\s*\"?(.*?)[\"|>]",
                Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(pageContents);

Vielen Dank schonmal...


----------



## hdi (31. Mrz 2009)

Dein Bsp macht folgendes:
Aus einem Text (pageContents) werden bestimmte Teile rausgesucht, die
eine Bedingung erfüllen, die durch einen regulären Ausdruck geformt ist.
(Das ist das komische Argument für die compile() Methode)

Speziell filtert dir <a\\s+href\\s*=\\s*\"?(.*?)[\"|>] wohl Links aus einem HTML Quellcode.

Und damit hast du auch schon ein Bsp, wofür diese Klasse gut ist. Eben um 
bestimmte Konstrukte/Muster in einem String zu finden. Du kannst damit auch
zB alle Jahreszahlen in einem geschichtlichen Text filtern, oder prüfen wie oft
ein Name vorkommt der mit "T" beginnt und mit "s" aufhört.

Solche Dinge lassen sich nur sehr sehr schwer oder gar nicht mit primitiveren Methoden
wie contains(), indexOf() usw lösen.

Der Kern dieser Sache ist eben der reguläre Ausdruck, nachdem du suchen willst.
Pattern (Java Platform SE 6)


----------



## oldshoe (31. Mrz 2009)

OK...Danke, das hilft erstmal.
Ist garnicht so einfach einen Überblick über die Ausdrücke zu bekommen.


Für Interessierte hier nochmal ein Link zum Thema:
Bastie.de - Informationen rund um Java und Performance


----------



## Noctarius (31. Mrz 2009)

Hatte bei den ersten Versuchen mit Regex Ausdrücken auch echte Schwierigkeiten. Aber mit der Zeit gewöhnt man sich an die Schreibweise und erkennt oft auf einen "kurzen" Blick was passieren soll.


----------



## Illuvatar (31. Mrz 2009)

Eine Seite, die ich da sehr gut finde:
Regenechsen


----------



## Noctarius (31. Mrz 2009)

RegEx: online regular expression testing

Der ist auch fein, zumal er im Hintergrund auch Java nutzt um die Regex-Ausdrücke auszuführen. Geht meist schneller als groß im Programm rumfummeln (zu mindestens bei Webanwendungen)


----------

