Meillo hat geschrieben: 06.04.2022 09:49:22
Du hast ganz recht, dass es nicht *die* REs gibt, sondern REs genau genommen eine Klasse von Sprachen sind, naemlich den Regulaeren Sprachen (Typ 3 nach Chomsky).
(Wem das zu weit vom Thema ist: einfach ignorieren, das Folgende ist für die Praxis nicht wichtig)
Auch wenn das jetzt extrem weit in die Theorie führt...
Typ 3 äquivalent sind nur die "echten RE". Vieles was in den Spracherweiterungen enthalten ist, klappt nicht ohne look-a-head oder Zähler. Und sowas gibt's so bei einfachen endlichen Automaten noch nicht.
Außerdem würde ich nen RE nicht als Sprache bezeichnen. Ein RE ist eher ein Hilfsmittel, ein Bauteil eines Entscheidungsalgorithmus der entscheiden kann, ob eine Eingabe (die Zeichenfolge, die wir mit dem RE prüfen) zu einer Sprache gehört.
Du hast zum Beispiel die "Sprache der Telefonnummern", das wären alle "Wörter" (erlaubte Aneinanderreihungen von Zeichen) die eine Telefonnr. darstellen: Zahlen, mit ner gewissen Mindestlänge, mit Vorwahlen und ohne, mit Nebenstellen und ohne, etc.
Dann hast Du die "Sprache a", das könnten dann alle "Wörter" sein, die nur aus a's bestehen, beliebiger Länge. (a,aa,aaa,aaaaaaaa,....)
Oder die "Sprache zweier a", dass sind dann alle "Wörter" die aus paaren von a's bestehen. (aa,aaaa,aaaa... aber nicht a, und nicht aaa usw.)
Oder eine "Sprache gleichmäßig mit a", bei denen für jeden anderen Buchstaben auch ein a im Wort enthalten ist.
Oder die "Sprache aller Primzahlen", das wären dann nur "Wörter", die auch Primzahlen sind.
(Natürlich könnte man hier auch die "Sprache der Regulären Ausdrücke" erfinden, das wären dann alle Aneinanderreihungen von Zeichen, die man als regulären Ausdruck nutzen kann. Nur "Wirksamkeit" hat diese Sprache halt nicht.)
Für manche(!) Sprachen kannst Du einen einfachen endlichen Automaten bauen, der entscheiden kann, ob das Wort zu dieser Sprache gehört. Wenn Du für eine Sprache so einen erkennenden Automaten konstruieren kannst, dann ist diese Sprache Teil der sogenannten "Regulären Sprachen".
Bei anderen Sprachen ist die Frage "gehört das Wort zu der Sprache" mit einem einfachen endlichen Automaten aber nicht immer zu lösen.
Denn bei manchen Sprachen braucht es zusätzliche Hilfsmittel, die ein einfacher Automat nicht hat. Wie zum Beispiel "merke Dir ein Zeichen" oder "zähle diese Zeichen mit". Sowas leisten erst Kellerautomaten bzw. Turingmaschinen (die übrigens auch ein wunderbares Thema sind). Diese Art von Berechnungsmaschinen gibt's bei Typ 3 einfach nicht.
Die "ganz einfache Art" von RE ist äquivalent zu endlichen Automaten. Bei manchen Spracherweiterungen stimmt das aber nicht mehr. Mit anderen Worten, Du könntest für diese spezielle Art von RegEx dann keinen passenden endlichen Automaten erstellen. Und damit sind die dann nicht mehr Typ 3 konform.
Wen das Thema interessiert: gibt viele Fachbücher, "Logik für Informatiker" und "Theoretische Informatik - kurzgefasst" (U. Schöning) gehören m.E. zu den etwas lesbareren.