Was sind reguläre Ausdrücke
Hallo liebe/r Batch-Freunde/in
ich bin neu hier und möchte mich kurz vorstellen, dann eine Frage stellen.
Ich bin 55, besitze seit 1993 einen PC und habe Freude an der Lösung
eines EDV-Problems mit einfachsten Mitteln. Der schnelle "Klick" ist heutzutage
wichtig, ok, wird von mir aber unter "keine Herausforderung" einsortiert.
Seit einiger Zeit lese ich hier mit und bin hellauf begeistert. Ich habe mir viel erlesen
können. Lieben Dank an dieser Stelle für die vielen tollen Beiträger an alle Schreiber.
Ich hoffe sehr, das meine Beiträge korrekt sind und der "rote Faden" erkennbar ist.
Ich hoffe das es ok ist, das bei mir weniger Tilden zu finden sind und von mir weniger
die "ich schreibe alles in eine Endcodezeile" bevorzugt wird
Zu meiner Frage:
In Hilfetexten lese ich sehr oft über "reguläre Ausdrücke"
Kann mir wer sagen was das ist und kann ggf. ein paar Beispiele
einer Anwendung sagen?
Lieben Dank für Euere Antworten vorweg !
Gruß Volker
ich bin neu hier und möchte mich kurz vorstellen, dann eine Frage stellen.
Ich bin 55, besitze seit 1993 einen PC und habe Freude an der Lösung
eines EDV-Problems mit einfachsten Mitteln. Der schnelle "Klick" ist heutzutage
wichtig, ok, wird von mir aber unter "keine Herausforderung" einsortiert.
Seit einiger Zeit lese ich hier mit und bin hellauf begeistert. Ich habe mir viel erlesen
können. Lieben Dank an dieser Stelle für die vielen tollen Beiträger an alle Schreiber.
Ich hoffe sehr, das meine Beiträge korrekt sind und der "rote Faden" erkennbar ist.
Ich hoffe das es ok ist, das bei mir weniger Tilden zu finden sind und von mir weniger
die "ich schreibe alles in eine Endcodezeile" bevorzugt wird
Zu meiner Frage:
In Hilfetexten lese ich sehr oft über "reguläre Ausdrücke"
Kann mir wer sagen was das ist und kann ggf. ein paar Beispiele
einer Anwendung sagen?
Lieben Dank für Euere Antworten vorweg !
Gruß Volker
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 175677
Url: https://administrator.de/forum/was-sind-regulaere-ausdruecke-175677.html
Ausgedruckt am: 11.04.2025 um 17:04 Uhr
16 Kommentare
Neuester Kommentar
Hi und willkommen im Forum !
[ot]
Jetzt bin ich jetzt aber mal gespannt was da kommt....
[/ot]
Also ich kann es jedenfalls nicht besser (oder einfacher) beschreiben, als es hier schon steht. In der Praxis werden sie u.a. auch als Filterbeschreibungen von Parsern (z.B. XML/HTML Parsern) verwendet.
mrtux
[ot]
Jetzt bin ich jetzt aber mal gespannt was da kommt....
[/ot]
Also ich kann es jedenfalls nicht besser (oder einfacher) beschreiben, als es hier schon steht. In der Praxis werden sie u.a. auch als Filterbeschreibungen von Parsern (z.B. XML/HTML Parsern) verwendet.
mrtux
Das kann man doch wie immer alles bei Wikipedia nachlesen...?
Reguläre Ausdrücke sind eine "Suchsprache".
Man definiert wie ein Text strukturell aufgebaut sein muss und kann danach suchen oder den Text auf Korrektheit überprüfen.
Möchtest du z.B. in einem Text ein Datum im Format TT.MM.JJJJ suchen, dann ist der reguläre Ausdruck dafür
Und wenn du jetzt mitgedacht hast merkst du auch, dass sich damit auch das Datum
Also müssen wir den regulären Ausdruck noch ausbauen:
Und selbst damit wäre ein Datum wie der 31.02.2011 noch nicht ausgeschlossen.
Du siehst also, dass Reguläre Ausdrücke ganz schnell ziemlich kompliziert werden und trotzdem oft noch Probleme haben.
Darum gilt bei RegExen der klassische Spruch:
Reguläre Ausdrücke sind eine "Suchsprache".
Man definiert wie ein Text strukturell aufgebaut sein muss und kann danach suchen oder den Text auf Korrektheit überprüfen.
Möchtest du z.B. in einem Text ein Datum im Format TT.MM.JJJJ suchen, dann ist der reguläre Ausdruck dafür
/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/
Und wenn du jetzt mitgedacht hast merkst du auch, dass sich damit auch das Datum
99.14.1001
finden lassen würde.Also müssen wir den regulären Ausdruck noch ausbauen:
/(0?[1-9]|[12][0-9]|3[01])\.(0?[1-9]|1[012])\.[0-9]{1,4}/
Und selbst damit wäre ein Datum wie der 31.02.2011 noch nicht ausgeschlossen.
Du siehst also, dass Reguläre Ausdrücke ganz schnell ziemlich kompliziert werden und trotzdem oft noch Probleme haben.
Darum gilt bei RegExen der klassische Spruch:
Manche Leute denken "Ich habe ein Problem - ich werde das mit Regulären Ausdrücken lösen" - Jetzt haben sie zwei Probleme.

Hallo Batchfan, willkommen hier im Forum,
Reguläre Ausdrücke beschreiben Eigenschaften von Zeichenketten. Sie sind in allen Programmiersprachen verfügbar, auch in Texteditoren usw.
Sie werden benutzt um bestimmte Zeichenketten zu finden bzw Text zu ersetzten.
Der Umfang und die Art der Regex-Maschine unterscheiden sich aber z.T. erheblich.
Tonangebend ist die Programmiersprache Perl, die dort verfügbaren Features gelten als das Maß aller Dinge in dem Bereich. Allerdings finden die regulären Ausdrücke im Windows-Bereich nicht so viel Verwendung wie bei Unix/Linux.
Dieser http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck Wikipedia-Artikel gibt einen Überblick.
Das Buch "Reguläre Ausdrücke" von Jeffrey Friedl http://www.amazon.de/Regul%C3%A4re-Ausdr%C3%BCcke-Jeffrey-F-Friedl/dp/3 ... ist eines der besten Computer-Bücher die ich bisher gelesen habe.
Beispiele findest Du im Internet wie Sand am Meer. Für mich gehören Reguläre Ausdrücke zu den wichtigsten Werkzeugen bei meiner Arbeit. Wenn man sie beherrscht, kann man nicht mehr ohne sie.
Gruß
Markus
Reguläre Ausdrücke beschreiben Eigenschaften von Zeichenketten. Sie sind in allen Programmiersprachen verfügbar, auch in Texteditoren usw.
Sie werden benutzt um bestimmte Zeichenketten zu finden bzw Text zu ersetzten.
Der Umfang und die Art der Regex-Maschine unterscheiden sich aber z.T. erheblich.
Tonangebend ist die Programmiersprache Perl, die dort verfügbaren Features gelten als das Maß aller Dinge in dem Bereich. Allerdings finden die regulären Ausdrücke im Windows-Bereich nicht so viel Verwendung wie bei Unix/Linux.
Dieser http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck Wikipedia-Artikel gibt einen Überblick.
Das Buch "Reguläre Ausdrücke" von Jeffrey Friedl http://www.amazon.de/Regul%C3%A4re-Ausdr%C3%BCcke-Jeffrey-F-Friedl/dp/3 ... ist eines der besten Computer-Bücher die ich bisher gelesen habe.
Beispiele findest Du im Internet wie Sand am Meer. Für mich gehören Reguläre Ausdrücke zu den wichtigsten Werkzeugen bei meiner Arbeit. Wenn man sie beherrscht, kann man nicht mehr ohne sie.
Gruß
Markus
Moin Batchfan,
willkommen im Forum.
Nur noch zwei Fussnoten zu den kompetenten Vor-Kommentaren.
a)
Ein Testen und gefahrloses Ausprobieren von "Regulären Ausdrücken" ist am CMD-Prompt möglich, beispielsweise mit
--> Zu "Findstr" in Verbindung mit "RegEx" sollten auch Suchmaschinen einiges liefern.
b)
[OT]
[/OT]
Grüße
Biber
willkommen im Forum.
Nur noch zwei Fussnoten zu den kompetenten Vor-Kommentaren.
a)
Ein Testen und gefahrloses Ausprobieren von "Regulären Ausdrücken" ist am CMD-Prompt möglich, beispielsweise mit
Dir /s /b | Findstr /R "<RegEx>"
--> Zu "Findstr" in Verbindung mit "RegEx" sollten auch Suchmaschinen einiges liefern.
b)
[OT]
Zitat von @64748:
...Für mich gehören Reguläre Ausdrücke zu den wichtigsten Werkzeugen bei meiner Arbeit.
Bei uns im Team sind eher spontane nicht ganz so reguläre Kraftausdrücke in mehreren Sprachen üblich....Für mich gehören Reguläre Ausdrücke zu den wichtigsten Werkzeugen bei meiner Arbeit.
Wenn man sie beherrscht, kann man nicht mehr ohne sie.
Das wiederum ist bei uns auch so.[/OT]
Grüße
Biber

Hallo Volker,
hier ein Beispiel. Kurze Erklärung, ich schreib mit Perl ein kurzes Programm welchen Geographische Koordinaten verarbeiten kann. Es geht darum, einen Eingabestring der Form "N 51° 3.123' E 006° 12.543'" umzuwandeln in einen Vektor mit Grad und Bogenminuten. Die folgende Funktion testet zunächst ob der übergebene String dem Format "N xx° xx.xxx'" oder "E xxx° xx.xxx'" entspricht und bricht sonst den Programmablauf ab.
Der reguläre Ausdruck bedeutet: [NE] "N" oder "E",
\s ein Whitespace (Leerzeichen oder Tab)
\d eine Ziffer
{2,3} zwei oder drei davon
usw.
der Punkt muss hier mit Backslach escaped werden, weil er sonst auf "jedes Zeichen" passt.
Der Ausdruck kann natürlich noch verfeinert werden und dann testen, dass für die Grad und Minuten auch sinnvolle Werte eingegeben werden. Also die Gradzahl kann maximal gleich 180 sein, also testet man anstatt /\d{2,3}/ auf /[01]?\d{1,2}/
Übrigens ist das Buch von Friedl im Anbetracht der trockenen Materie wirklich gut zu lesen
Gruß
Markus
Wer aus dem Stegreif einige kleine verständliche Beispiele auf Eingabezeile hätte, dem wäre ich sehr dankbar
hier ein Beispiel. Kurze Erklärung, ich schreib mit Perl ein kurzes Programm welchen Geographische Koordinaten verarbeiten kann. Es geht darum, einen Eingabestring der Form "N 51° 3.123' E 006° 12.543'" umzuwandeln in einen Vektor mit Grad und Bogenminuten. Die folgende Funktion testet zunächst ob der übergebene String dem Format "N xx° xx.xxx'" oder "E xxx° xx.xxx'" entspricht und bricht sonst den Programmablauf ab.
sub str2vect{
my $coordstring = shift ;
die "Fehler: $coordstring \n " if $coordstring !~ /[NE]\s\d{2,3}°\s\d{1,2}\.\d{1,3}/ ;
# ...
}
\s ein Whitespace (Leerzeichen oder Tab)
\d eine Ziffer
{2,3} zwei oder drei davon
usw.
der Punkt muss hier mit Backslach escaped werden, weil er sonst auf "jedes Zeichen" passt.
Der Ausdruck kann natürlich noch verfeinert werden und dann testen, dass für die Grad und Minuten auch sinnvolle Werte eingegeben werden. Also die Gradzahl kann maximal gleich 180 sein, also testet man anstatt /\d{2,3}/ auf /[01]?\d{1,2}/
Übrigens ist das Buch von Friedl im Anbetracht der trockenen Materie wirklich gut zu lesen
Gruß
Markus

Hallo Volker,
das bezieht sich jetzt auf Perl, angenommen Du hast einen String $name, dann kannst Du testen
und zwei gleiche Buchstaben hintereinander
wobei \w auf alphanumerische Zeichen passt, also das gleiche ist wie [a-zA-Z_]
Markus
das bezieht sich jetzt auf Perl, angenommen Du hast einen String $name, dann kannst Du testen
if ( $name =~ /me[iy]er/ )
if ( $name =~ /\w{2}/ )
Markus
um genau diese auszufiltern ?
/me[iy]er\.txt/
Dateien mit 2 gleiche aufeinanderfolgende Zeichen (cc) zu finden ?
/(.)\1/
Die Lösung
if ( $name =~ /\w{2}/ )
ist übrigens falsch. Das steht nur für 2 beliebige Buchstaben. Nicht zweimal das selbe Zeichen.Die Datei mit geginnendem b und endendem t zu finden ?
/^b.*t$/
Moin Batchfan,
ein Stück weiter oben verwies ich schon vergeblich auf die Möglichkeit des gefahrlosen RegEx-Testens am CMD-Prompt mit FindStr.
Beispiele dafür, bezogen auf deine Übungsfragestellung:
Ist die Klein/Grossschreibung egal.... dann wäre das Ergebnis länger:
Grüße
Biber
ein Stück weiter oben verwies ich schon vergeblich auf die Möglichkeit des gefahrlosen RegEx-Testens am CMD-Prompt mit FindStr.
Beispiele dafür, bezogen auf deine Übungsfragestellung:
d:\temp>echo.>bbccddee.txt
d:\temp>echo.>bcdebcde.txt
d:\temp>dir /a-d /b|findstr /r "^b.*t$"
backup2.txt
battest.bat
bbccddee.txt
bcdebcde.txt
biblio.dbt
binfile.txt
bsp.txt
bspUTF_Typed.txt
d:\temp>dir /A-d /b|findstr /r "^b.*cc.*t$"
bbccddee.txt
d:\temp>
- der erste eingegebene Befehl dir /a-d /b|findstr /r "^b.*t$" listet alle Dateien auf, die mit "b" beginnen und mit "t" kläglich enden.
- der zweite eingegebene Befehl dir /A-d /b|findstr /r "^b.*cc.*t$" listet alle Dateien auf, die mit "b" beginnen,mit "t" kläglich enden.und ein "cc" dazwischen haben.
Ist die Klein/Grossschreibung egal.... dann wäre das Ergebnis länger:
d:\temp>dir /a-d /b|findstr /i /r "^b.*t$"
backup2.txt
battest.bat
bbccddee.txt
bcdebcde.txt
Bibertest.txt
biblio.dbt
binfile.txt
bsp.txt
BspUTF8.txt
BspUTFcmda.txt
BspUTFcmdu.txt
BspUTFout.txt
bspUTF_Typed.txt
Grüße
Biber