faecher:informatik:oberstufe:automaten:regulaere_ausdruecke:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:automaten:regulaere_ausdruecke:start [06.03.2023 18:20] – [Erweiterte reguläre Ausdrücke] Frank Schiebelfaecher:informatik:oberstufe:automaten:regulaere_ausdruecke:start [12.02.2025 18:15] (aktuell) – [Sandkasten bei regex101.com] Marco Kuemmel
Zeile 56: Zeile 56:
  
   * Eckige Klammern fassen Zeichengruppen zusammen. Der Ausdruck ''[0-9]'' bedeutet "die Ziffern von 0 bis 9", ''[0-9]*'' bedeutet entsprechend "beliebig oft eines der Zeichen von 0-9. Bislang hätten wir dafür ''(0|1|2|3|4|5|6|7|8|9)*'' schreiben müssen.   * Eckige Klammern fassen Zeichengruppen zusammen. Der Ausdruck ''[0-9]'' bedeutet "die Ziffern von 0 bis 9", ''[0-9]*'' bedeutet entsprechend "beliebig oft eines der Zeichen von 0-9. Bislang hätten wir dafür ''(0|1|2|3|4|5|6|7|8|9)*'' schreiben müssen.
-  * ''[abc]'' – der Buchstabe a, b oder c (anstatt ''(a|b|c)'')+  * ''[abc]'' – der Buchstabe a, b oder c. 
-  * ''[a-zA-Z]'' – die Buchstaben A bis Z, groß und klein.+  * ''[a-zA-Z]'' – einer der Buchstaben A bis Z, groß und klein.
   * ''.''((Punkt)) – ein beliebiges Zeichen.   * ''.''((Punkt)) – ein beliebiges Zeichen.
   * ''[^abc]'' – jedes Zeichen außer den Buchstaben a, b und c ((Hier bedeutet das ''^'' gewissermaßen "nicht"))   * ''[^abc]'' – jedes Zeichen außer den Buchstaben a, b und c ((Hier bedeutet das ''^'' gewissermaßen "nicht"))
Zeile 63: Zeile 63:
   * Der Anfang einer Zeile kann durch durch ein ''^'' gematcht werden, das Ende durch ein ''$''.   * Der Anfang einer Zeile kann durch durch ein ''^'' gematcht werden, das Ende durch ein ''$''.
   * Ein ''*'' bedeutet wie bisher, dass beliebig viele Zeichen der vorherigen Gruppe gesucht werden ''^[aeiou]*n$'' – findet n, an, en, in, on, un, aan, aaan, aen, ein, ... sofern sie in einer Zeile stehen.   * Ein ''*'' bedeutet wie bisher, dass beliebig viele Zeichen der vorherigen Gruppe gesucht werden ''^[aeiou]*n$'' – findet n, an, en, in, on, un, aan, aaan, aen, ein, ... sofern sie in einer Zeile stehen.
-  * ''a{2,5}'' - 2 bis 5 Vorkommen des Buchstabens a ((Bisher: ''(aa|aaa|aaaa|aaaaa)'')) +  * ''a{2,5}'' - 2 bis 5 Vorkommen des Buchstabens a. 
-  * ''b+'' - mindestens ein Vorkommen des Buchstabens b ((Beliebig oft, aber nicht kein mal)).+  * ''b+'' - mindestens ein Vorkommen des Buchstabens b ((Unterschied zu ''*'': Beliebig oft, aber **nicht** kein mal))
 + 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A2) === 
 + 
 +Schreibe die Ausdrücke ''[abc]'', ''b+'' und ''a{2,4}'' mit Hilfe der elementaren regulären Operatoren auf. 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A3) === 
 + 
 +Bearbeite das Tutorial unter https://regexone.com/, um mit den erweiterten regulären Operatoren vertraut zu werden.
  
  
Zeile 76: Zeile 89:
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A2) ===+=== (A4) ===
  
 Öffne die Seite https://regex101.com/ und sorge dafür, dass die Einstellungen wie im Screenshot zusehen angepasst sind((Regex Flavor ''Java 8'', Funktion ''Match'', regex Optionen ''gm'')) Öffne die Seite https://regex101.com/ und sorge dafür, dass die Einstellungen wie im Screenshot zusehen angepasst sind((Regex Flavor ''Java 8'', Funktion ''Match'', regex Optionen ''gm''))
Zeile 83: Zeile 96:
 <callout type="warning" icon="true">  <callout type="warning" icon="true"> 
  
-Achtung: Weil die regulären Ausdrücke nach der Greedy Strategie angewandt werden, musst du deine regulärer Ausdruck inklusive Zeilenanfang (''^'') und Zeilenende (''$'') testen, sonst klappts nicht - siehe Screenshot. Probiere einfach aus, was passiert, wenn du diese beiden Zeichen weglässt.+Achtung: Weil die regulären Ausdrücke nach der Greedy Strategie angewandt werden, musst du deine regulärer Ausdruck inklusive Zeilenanfang (''^'') und Zeilenende (''$'') testen, sonst klappts nicht - siehe Screenshot. Probiere einfach aus, was passiert, wenn du diese beiden Zeichen weglässt. Wenn du Groß und Kleinschreibung nicht unterscheiden möchtest, musst du die Option ''i'' für Case-Insensitive setzen.
 </callout> </callout>
 +
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (A5) Übungen ===
 +
 +Füge die etwa 180000 Worte, die in {{ :faecher:informatik:oberstufe:automaten:regulaere_ausdruecke:worte.zip |dieser Datei}} enthalten sind in das "Test String"-Feld bei regex101.com ein.
 +
 +Formuliere anschließend reguläre Ausdrücke, um die folgenden Wörter zu finden. Groß- und Kleinschreibung soll nicht berücksichtigt werden - siehe oben für die Bedeutung der Option ''i''.
 +
 +  - Alle Wörter, die die Zeichenfolge ''mc'' enthalten (zu erwarten: 35 Treffer)
 +  - Alle Wörter, die mit ''lau'' beginnen und danach noch genau einen weiteren Buchstaben enthalten (12 Treffer)
 +  - Alle Wörter, die mit ''L'' beginnen und mit ''cht'' enden (31 Treffer)
 +  - Alle Wörter, die mit einem Vokal enden (36218 Treffer)
 +  - Alle Wörter, die mit ''d'', ''r'' oder ''t'' beginnen und mit ''a'', ''g'' oder ''l'' enden (1258 Treffer)
 +  - Alle Wörter, die mindestens zwei ''u'' enthalten (13749 Treffer)
 +  - Alle Wörter, die ein doppeltes ''u'' (also ''uu'') enthalten (67 Treffer)
 +  - Alle Wörter, die aus sechs Buchstaben bestehen (6722 Treffer)
 +  - Alle Wörter, die höchstens fünf Buchstaben lang sind (7018 Treffer)
 +  - Alle Wörter, die mindestens 15 Buchstaben lang sind (38518 Treffer)
 +  - Alle Wörter, die aus sechs Buchstaben bestehen und deren dritter Buchstabe ein ''t'' ist (344 Treffer)
 +  - Alle Wörter, die die Vokale ''a'', ''e'', ''i'', ''o'' und ''u'' in dieser Reihenfolge und genau einmal enthalten. (1 Treffer)
 +  - Alle Wörter, die ein ''y'' enthalten, aber kein ''a''. (885 Treffer)
 +
  
 ---- ----
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A3) Gültige Telefonnummern ===+=== (A6) Gültige Telefonnummern ===
  
 Es soll erkannt werden, ob ein String das Es soll erkannt werden, ob ein String das
 korrekte Format für eine Telefonnummer hat. korrekte Format für eine Telefonnummer hat.
  
-Für uns soll eine korrekte Telefonnummer zunächst folgende Kriterien aus folgenden Bestandteilen zusammengesetzt sein:+Für uns soll eine korrekte Telefonnummer zunächst aus folgenden Bestandteilen zusammengesetzt sein:
  
   * Einer Vorwahl, die mit einer 0 beginnt und danach mindestens eine andere Ziffer enthält.   * Einer Vorwahl, die mit einer 0 beginnt und danach mindestens eine andere Ziffer enthält.
-  * Einem der folgenden Zeichen zur Abtrennung der Vorwahl: -, / oder Leerzeichen+  * Einem der folgenden Zeichen zur Abtrennung der Vorwahl: ''-''''/'' oder Leerzeichen
   * Einer mindestens einstelligen Zahl, die nicht mit 0 beginnt.   * Einer mindestens einstelligen Zahl, die nicht mit 0 beginnt.
  
  • faecher/informatik/oberstufe/automaten/regulaere_ausdruecke/start.1678126829.txt.gz
  • Zuletzt geändert: 06.03.2023 18:20
  • von Frank Schiebel