Benutzer-Werkzeuge

Webseiten-Werkzeuge


neuerlehrplan:klasse10:regulaeresprachen

Reguläre Sprachen

Reguläre Ausdrücke

Im Stoffgebiet Netzwerke habt ihr IP-Adressen kennengelernt.

Beispiel:

192.168.178.1

Um eine IP-Adresse darzustellen ist die Zeichenmenge
erforderlich, welche man als Alphabet auffassen der formalen Sprache „IP-Adresse“ auffassen kann. „IP-Adressen“ ist dabei eine Teilmenge der Menge , also der Menge aller Worte, die sich mit beschreiben lassen.

1. Möglichkeit: in Worten
Eine IP-Adresse besteht aus vier ein bis dreistelligen Zahlen im Bereich von 0 bis 255, die jeweils durch einen Punkt getrennt sind.

2. Möglichkeit: durch einen regulären Ausdruck

Reguläre Ausdrücke (RegEx) sind eine leistungsfähige Methode, um Texte zu durchsuchen, zu analysieren und bestimmte Muster zu finden. Sie sind in der Informatik eine Möglichkeit, einen Text nach bestimmten Ausdrücken zu durchsuchen.

Kurzreferenz für reguläre Ausdrücke

Grundlagen

Ausdruck Bedeutung BeispielFindet
a genau den Buchstaben a „Banane“a
abcdie Zeichenfolge abc „xabcx“ abc
. ein beliebiges Zeichen (außer Zeilenumbruch)„Katze“ Katze, Ktze, …

Zeichenklassen

Ausdruck Bedeutung BeispieltextTreffer
\deine Ziffer (0–9) „Haus 42“ 4, 2
\wein Wortzeichen (Buchstabe, Zahl, _)„Test_1“ T, e, s, t, _, 1
\sein Leerzeichen „Hallo Welt“(zwischen Hallo und Welt)
\bWortgrenze „ein Haus“ vor „ein“, „Haus“

Wiederholungen

Ausdruck Bedeutung BeispielFindet
a* 0 oder mehr a„aaah“ aaa
a+ 1 oder mehr a„baaah“ aaa
a? 0 oder 1 a „baah“ a
a{3} genau 3 a „aaaah“ aaa
a{2,4}2 bis 4 a „aaaaah“aaaa

Positionen

Ausdruck Bedeutung Beispiel Findet
^abcsteht am Anfang der Zeile„abcde“ abc
xyz$steht am Ende der Zeile „testxyz“xyz

Gruppierung und Alternativen

Ausdruck Bedeutung Beispieltext Treffer
(abc) Gruppe – fasst Zeichen zu einer Einheit zusammen abcabc mit (abc) „abc“ (erste Gruppe)
A | B Alternative – findet A oder B Katze Hund Maus mit Katze | Hund„Katze“, „Hund“
(ab){2} Wiederholung einer Gruppe – zweimal „ab“ hintereinanderababc „abab“
(?:abc) Nicht-speichernde Gruppe – gruppiert ohne Nummerierung (?:abc){2} auf abcabc „abcabc“
(\d+)\s+\1Rückverweis – sucht zwei gleiche Zahlen hintereinander 42 42 „42 42“

Pythonprogramme zum Test regulärer Ausdrücke

In den folgenden Pythonprogrammen kannst du die Beispiele aus den Referenztabellen testen.

#Grundlagen
#Der reguläre Ausdruck muss in einem sogenannten Raw-String r"" stehen.
import re
text = "Banane"
print(re.findall(r"a", text))
text = "xabca"
print(re.findall(r"abc", text))
text = "Katze"
print(re.findall(r".", text))
#Zeichenklassen
import re
text = "Baby"
print(re.findall(r"[abc]", text))
text = "Haus"
print(re.findall(r"[A-Z]", text))
text = "Test123"
print(re.findall(r"[a-zA-Z]", text))
text = "A1B"
print(re.findall(r"[^0-9]", text))
#Wiederholungen
import re
text = "aaah"
print(re.findall(r"a*", text))
text = "baaah"
print(re.findall(r"a+", text))
text = "baah"
print(re.findall(r"a?", text))
text = "aaah"
print(re.findall(r"a{3}", text))
text = "aaaaah"
print(re.findall(r"a{2,4}", text))
#Positionen
import re
text = "abcde"
print(re.findall(r"^abc", text))
text = "testxyz"
print(re.findall(r"xyz$", text))
#Wiederholungen
import re
text = "abcabc"
print(re.findall(r"(abc)", text))
text = "Katze Hund Maus"
print(re.findall(r"Katze|Hund", text))
text = "ababc"
print(re.findall(r"(ab){2}", text))
text = "abcabc"
print(re.findall(r"(?:abc){2}", text))
text = "42 42"
print(re.findall(r"(\d+)\s+\1", text))

Aufgabe 1

Entwirf einen regulären Ausdruck, der drei ein- bis dreistellige Zahlen durch einen Punkt trennt! Wende den Ausdruck im nachfolgenden Programmauf den Text an!

# Aufgabe 1
import re
text = """
192.168.178.1
0.0.0.0
270.98.8.99
192_168_4236_7
3.3.3,3
127.0.0.0
177.0.0
1921681781
"""
print(re.findall(r"", text))

Aufgabe 2
Verbessere deinen Ausdruck von Aufgabe 1 so, dass der IP-Adressen erkennt!

# Aufgabe 2
import re
text = """
192.168.178.1
0.0.0.0
270.98.8.99
192_168_4236_7
3.3.3,3
127.0.0.0
177.0.0
1921681781
"""
print(re.findall(r"", text))

Aufgabe 3
Finde reguläre Ausdrücke für

  • eine deutsche Postleitzahl
  • eine einfache E-Mail-Adresse
  • Wörter mit Großbuchstaben am Anfang

Reguläre Sprachen

Eine reguläre Sprache ist eine Menge von Wörtern über ein Alphabet $A$, die man durch einfache, sich wiederholende Muster (Reguläre Ausdrücke) beschreiben kann.

Reguläre Sprachen haben in der Informatik eine besondere Bedeutung, z.B. beim Compilerbau. In Klasse 12 werden wir den Begriff fachlich exakt definieren.

Aufgabe 4

Arbeite die Flaci-Seite zu regulären Ausdrücken durch!

neuerlehrplan/klasse10/regulaeresprachen.txt · Zuletzt geändert: von lutz