Archiv für die Kategorie ‘Reguläre Ausdrücke am Beispiel’

Buchstaben und Ziffern sind reguläre Ausdrücke

Mittwoch, 17. Juni 2009

Jeder Buchstabe und jede Ziffer ist ein regulärer Ausdruck.

Ein sehr einfacher RegEx ist also a oder 1. In dem folgenden Text würden die beiden Ausdrücke wie angezeigt matchen, d.h. dort einen Treffer erzeugen:

Anton rät: Bei Feuer einfach 112 anrufen.

Zu beachten ist hier, dass grundsätzlich zwischen Groß- und Kleinschreibung unterschieden wird. Je nachdem, welche RegEx-Ausfürhmethode eingesetzt wird, lässt sich aber die case-sensitivity abschalten.

Zeichengruppen sind reguläre Ausdrücke

Mittwoch, 17. Juni 2009

Es lassen sich auch mehrere Zeichen, Buchstaben oder Ziffern zu einer Gruppe zusammenfügen. Die geschieht innerhalb eines Paares eckiger Klammern [ ]. Dazu lassen sie sich einzeln aufzählen oder aber als Bereich definieren:

  1. [amg] – Die Buchstaben a, m und g sind gemeint. (einzeln aufgezählt)
  2. [f-y] – Alle Buchstaben von f bis y sind gemeint. (Bereich definiert)
  3. [145a-d] – Die Ziffern 1, 4, 5 und die Buchstaben a bis d sind gemeint. (Kombination aus Aufzählung und Bereich)

Wir matchen nun alle drei Zeichengruppen gegen den selben Satz.

  1. Ein Text mit den Zahlen 0815 und 4711 wird gegen die obigen RegEx gematcht.
  2. Ein Text mit den Zahlen 0815 und 4711 wird gegen die obigen RegEx gematcht.
  3. Ein Text mit den Zahlen 0815 und 4711 wird gegen die obigen RegEx gematcht.

Wie zu erkennen ist, werden die Zeichen einzeln gematcht. Jede Zeichengruppe beschreibt nur ein einziges Zeichen.
Zu beachten ist, dass die eckigen Klammern Sonderkonstrukte sind. Somit müssen diese, wenn nach ihnen gesucht werden soll, entwertet werden: \[ bzw. \] . Dem Bindestrich - kommt innerhalb der Zeichengruppe eine besondere Bedeutung zu: Steht er zwischen zwei Zeichen, definiert dies den Bereich zwischen den beiden. Steht er am Ende, so gitl er ganz normal als Bindestrich oder Minus.

Alternativen regulärer Ausdrücke sind reguläre Ausdrücke

Donnerstag, 18. Juni 2009

Das klingt kompliziert, ist es aber nicht. Die Alternativen selbst sind keine regulären Ausdrücke, aber die Kombination zweier regulärer Ausdrücke als Alternative schon. Das Sonderzeichen dafür ist |. So lässt sich mit einem RegEx das eine oder das andere beschreiben. Zeit für ein Beispiel:

a|b matcht a oder b.
1|2|3 matcht 1 oder 2 oder 3.

Noch interesannter werden die Alternativen im Zusammenhang mit Gruppierungen. Auch das | musst escapet werden(\|), wenn es als Zeichen gemeint ist.

Runde Klammern gruppieren reguläre Ausdrücke

Donnerstag, 18. Juni 2009

Runde Klammern dienen dazu, reguläre Ausdrücke zu gruppieren. Somit lassen sich diese als eine Einheit verwenden. Ein Beispiel mit der Alternative:

(Tot)|(Tod) bezeichnet Tot oder Tod.

Die Zeichen werden durch das jeweilige Klammernpaar zusammengruppiert. In diesem Beispiel ließe sich aber auch anders gruppieren:

To(t|d) bedeutet dann To gefolgt von t oder d.

Beide RegEx beschreiben die selben Wörter. Besonders interessant werden Gruppierungen im Zusammenhang mit Backreferenzen.

. ist ein regulärer Ausdruck

Donnerstag, 18. Juni 2009

Wie bitte? . ist ein regulärer Ausdruck? Ja, ganz genau, der Punkt bezeichnet aber nicht den Punkt als solches, sondern jedes beliebige Zeichen. Soll er dennoch den Punkt beschreiben, so wird wieder eine Escape-Sequenz benötigt: .

. matcht also im Testtext1. wie folgt.

Testtext1.

Null, eins, viele reguläre Ausdrücke

Donnerstag, 18. Juni 2009

Richtig spannend wird es erst jetzt: Wir quantifizieren reguläre Ausdrücke. Dabei gibt es drei Operatoren: ?, +, *

  • a? Null oder ein a.
  • a+ Ein oder beliebig viele a.
  • a* Null oder beliebig viele a.

Dies lässt sich auch sehr gut mit Gruppierungen kombinieren:

(ähm)+ beschreibt ein oder beliebig viele ähm.