studyklar
IProg · Klausur 1 · Aufgabe 3

Vier reguläre Ausdrücke aus Beschreibung und Beispielen

Vier Beschreibungen, vier reguläre Ausdrücke. Rechts steht der Ausdruck des aktuellen Teils, zerlegt in Bausteine, und ab dem Prüfschritt die Beispiele mit Ergebnis. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 3: Reguläre Ausdrücke (12 Punkte)

Geben Sie für die folgenden vier Fälle je einen regulären Ausdruck an. Eine Anwendung im Programmcode ist nicht verlangt.

  1. 3 Großbuchstaben, gefolgt von einer zweistelligen Zahl, optional ein Stern dazwischen: ABC42 oder KGU*22 gültig.
  2. Bis zu drei Ziffern, gefolgt von zwei Buchstaben: 5kg oder 250ml gültig.
  3. Zwei Großbuchstaben, aber auch Listen möglich, dann mit Komma getrennt: AB oder CD, EF, GH gültig.
  4. Bis zu fünfstellige Zahl vor dem Dezimalkomma, mit exakt 2 Stellen nach dem Dezimalkomma. Das Dezimalkomma kann optional auch ein Dezimalpunkt sein: 12,34 oder 123.67 gültig.

Die Aufgabe ist aus dem Gedächtnisprotokoll nachgebaut. Teil b steht dort nur ungefähr: „Bis zu drei Ziffern, gefolgt von 2 Buchstaben oder so …“. Wir legen ihn fest als eine bis drei Ziffern, gefolgt von genau zwei Buchstaben, mit eigenen Beispielen. Die anderen Teile und die 12 Punkte stehen so im Protokoll.

In eigenen Worten: Ein regulärer Ausdruck (kurz Regex) ist ein Muster für Texte. Gesucht ist je Teil ein Muster, das genau die beschriebenen Eingaben erlaubt und alle anderen ablehnt. Programmcode drumherum ist nicht verlangt.

Aus Klausur 2, Aufgabe 3 („Datum mit einem regulären Ausdruck prüfen“): Dort prüft ein Ausdruck ein Datum wie 1.7.2023; dieselben Bausteine: Zeichenklassen, Mengenangaben in geschweiften Klammern, ^ und $.
Merke: Ein Ausdruck zur Prüfung einer Eingabe beginnt mit ^ und endet mit $. Sonst passt er schon, wenn nur ein Teil der Eingabe stimmt.
  1. Die Beschreibung in Bausteine zerlegen, von links nach rechts.
  2. Für jeden Baustein Zeichenklasse und Anzahl wählen.
  3. Den Ausdruck mit den Beispielen und mit Gegenbeispielen prüfen.

Die Bausteine von a

[A-Z] ist eine Zeichenklasse: genau ein Zeichen von A bis Z, also ein Großbuchstabe. {3} dahinter heißt „genau dreimal“.

Der Stern ist selbst ein Sonderzeichen (er heißt „beliebig oft“). Als echtes Zeichen schreibt man ihn mit Backslash: \*. Das ? dahinter macht ihn optional: einmal oder keinmal.

\d steht für eine Ziffer, \d{2} für genau zwei. Antwort a: /^[A-Z]{3}\*?\d{2}$/

Aus Skript 02, Folie 34: Quantoren: {n} genau n-mal, {m,n} m- bis n-mal, ? 0- oder 1-mal, * 0-mal oder öfter, + 1-mal oder öfter.
Aus Skript 02, Folie 33: Der Backslash hebt die besondere Wirkung des folgenden Zeichens auf.

a mit Beispielen prüfen

Beide Beispiele der Aufgabe passen. Die Gegenbeispiele zeigen, wozu jeder Baustein da ist: AB42 hat nur zwei Buchstaben, abc42 kleine, ABC**42 zwei Sterne, ABC*421 drei Ziffern, ABC4 nur eine. ABC-42 scheitert am Bindestrich: Zwischen Buchstaben und Ziffern ist nur ein Stern erlaubt. An ABC*421 sieht man das $: Ohne es würde der Anfang ABC*42 schon reichen.

Hinweis: \d{2} erlaubt auch 07. Soll die Zahl wirklich zweistellig sein (10 bis 99), schreibt man [1-9]\d. Beides ist als Antwort vertretbar.

Noch 7 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1a) Kennung mit Stern

ABC42, KGU*22

Gesucht ist ein Ausdruck für die Beschreibung von Teil a. Er entsteht im nächsten Schritt aus seinen Bausteinen.

LegendeNoch kein Ausdruck: Er entsteht in den Schritten der Teile a bis d.