Illustration einer tropischen Insel mit Palmen und einem hohen Berg

Java Blog für Programmierer

Gruppen in regulären Ausdrücken

· Christian Ullenboom

In regulären Ausdrücken lassen sich Teilausdrücke in runde Klammen setzen und diese bilden dann Gruppen; im Englischen heißen sie capturing groups. Gruppen haben zwei Vorteile:

  • An die Gruppe gesetzte Operationen wirken für die Gruppe. Beispiel: Der Ausdruck (\d\d)+ steht für gerade Anzahl von Ziffern.

  • Auf eine Gruppe lässt sich gezielt zurückgreifen.

Beispiel 1

Ein String enthält zwei Zahlen, die mit einem Doppelpunkt getrennt sind. Wie interessieren uns für die erste und zweite Zahl:

Matcher matcher = Pattern.compile( "(\\\\d+):(\\\\d+)").matcher( "1:123" );

if ( matcher.find() )

 System.out.println( matcher.group(1) + "," + matcher.group(2) ); // 1,123

Der Trick ist also, bei group(int) einen Index anzugeben; der beginnt bei 1.

Beispiel 2

Ein String aus einer Datei enthält einen Block in geschweiften Klammen. Wir interessieren uns für den Block.

String input = "line1\\n{line2\\nline3}\\nline4";

Matcher matcher = Pattern.compile( "\\\\{(.*)\\\\}", Pattern.MULTILINE | Pattern.DOTALL ).matcher( input );

if ( matcher.find() )

 System.out.println( matcher.group( 1 ) ); // line1, dann Umbruch, line2

Bei der Angabe ohne Index, also group(), ist die Rückgabe alles was find() gefunden hat. Die Fundstellen sind natürlich Teilstrings der gesamten Gruppe.

Kategorien: Insel

3 Kommentare

sebastian n. ·

Hallo Christian, aufgefallen ist es mir nicht auf einem Android-Device sondern in Chrome auf Ubuntu. Habe eben aber auch mal auf meinen Android-Devices nachgeschaut. In Chrome auf dem Lifetab mit Android 4.0.3 und auf dem Desire mit Android 2.2.2 gleiches Problem. Übrigens habe ich das Problem in den Kommentaren nicht! Weiter aufgefallen ist mir auch, dass auf der Übersichtsseite (http://www.tutego.de/blog/javainsel/) das Problem nicht auftaucht, hier wird alles korrekt dargestellt!

Christian Ullenboom ·

Nutzt du Android? Mir fällt gerade auf, dass es mit dem Chrome auf Windows OK ist, aber bei mir auf dem Samsung Tablet auch falsch ist. In der mobilen Ansicht und normalen. Ist ein Fehler.

sebastian n. ·

Kann es sein, dass in der Bloggingsoftware doppelte Backslashes zu einfachen werden (bzw. einfache gelöscht) in den Beiträgen :D ? Wenns auch bei den Kommentaren der Fall ist, ist bei nachfolgendem überall ein Backslash voran zu denken ^^ \\\\d -> \\d \\n -> n \\\\{ -> \\{

Die bisherigen Kommentare wurden aus WordPress übernommen. Neue Kommentare sind derzeit geschlossen.

← Alle Beiträge