6.5 Selbsttest zum gesamten Kapitel reguläre Ausdrücke

Aufgabe 1

Welche Aussagen sind zutreffend?

A) Reguläre Ausdrücke sind wichtig, um in Strings einzelne Texte zu suchen und zu ersetzen.
B) Reguläre Ausdrücke sind wichtig, um Eingaben in Formularfeldern zu überprüfen.
C) Reguläre Ausdrücke sind wichtig, um den Sourcecode zu verbessern.

Lösung zu Aufgabe 1

Richtig sind A) und B)

Aufgabe 2

Welche Sonderzeichen in regulären Ausdrücken gibt es? (Mehrere Antworten möglich)

A) *
B) ?
C) :
D) +
E) -
F) .
G) \\

Lösung zu Aufgabe 2

Richtig sind A), B), D), F) und G)

Aufgabe 3

Welche Sonderzeichen in regulären Ausdrücken gibt es? (Mehrere Antworten möglich)

A) \d
B) \B
C) \H
D) \s
E) \S
F) \w

Lösung zu Aufgabe 3

Richtig sind A), B), D), E) und F)

Aufgabe 4

Welche Aussagen sind zutreffend? (Mehrere Antworten möglich)

A) Runde Klammern werden zur Gruppierung eingesetzt.
B) Eine ^-Zeichen in einer runden Klammer ist eine Negation: /(^ )/.
C) Alternativen können mit dem Pipe-Zeichen | gebildet werden: /(1|2|3)Euro/. Der erste Treffer im Text wird gefunden. Die Reihenfolge im Suchmuster spielt keine Rolle.
D) Im folgenden Beispiel werden genau drei beliebige Zeichen gefunden: /(...)/.

Lösung zu Aufgabe 4

Die korrekten Antworten sind: - A) Runde Klammern werden zur Gruppierung eingesetzt. - C) Alternativen können mit dem Pipe-Zeichen | gebildet werden: /(1|2|3)Euro/. Der erste Treffer im Text wird gefunden. Die Reihenfolge im Suchmuster spielt keine Rolle. - D) Im folgenden Beispiel werden genau drei beliebige Zeichen gefunden: /(...)/.

Übung

Der reguläre Ausdruck soll Datumsfelder überprüfen. Wird hierin berücksichtigt, dass einige Monate nur 30 und andere Monate 31 Tage haben. Wird auch der Februar mit seinen 28 bzw. 29 Tagen berücksichtigt?

/\b(((0?[1-9]|[12][0-9])\.(0?[1-9]|1[0-2])\.)|(30\.((0?[13-9])|(1[0-2]))\.)|(31\.(0?[13578]|1[02])\.))(\d{2}|(19|20)\d{2})\b/

Lösung zur Übung

Dieses Beispiel aus der Praxis ist super, um daran den Effekt einer strukturierten Darstellung zu zeigen. Also zunächst sollte man diese Zeile umformatieren:

/\b
(
    (
        (0?[1-9]|[12][0-9])\.(0?[1-9]|1[0-2])\.
    )
    |
    (
        30\.((0?[13-9])|(1[0-2]))\.
    )
    |
    (
        31\.(0?[13578]|1[02])\.
    )
)
(\d{2}|(19|20)\d{2})
\b/

Und so dargestellt sollten Sie die Frage selbst beantworten können.