Das ist echt gar nicht so schwer wie ich immer dachte. Werde das glaube zum üben jetzt häufiger nutzen.
Es gibt immer ein Relevantes XKCD
Leider lange nicht alle auf https://xkcde.dapete.net/
Schlug mich zu es
Manche Menschen denken, wenn sie mit einem Problem konfrontiert werden: „Ich weiß, ich verwende Regex.“ Jetzt haben sie zwei Probleme.
Es gibt aber halt kein besseres Mittel (zumindest habe ich noch nichts besseres gefunden) um Strings zu parsen (was bis jetzt eine meiner absoluten Hassaufgaben war)
kommt auf deine strings an und was du mit denen machen willst.
query parameter aus ner url raussuchen? gute wahl.
strukturiertes komplexes zeug wie xml oder json? nimm n speziellen parser, ausser dich interessiert nur ob irgend ein muster darin vorkommt und willst sonst nix machen.
du brauchst n rekursives muster? ekelig, voll ekelig. kann irgendwer machen den ich nicht mag oder wir machen das nicht mit nem regulären ausdruck. pfui daibel.
Obligatorischer HTML mit Regex parsen stackoverflow post: https://stackoverflow.com/a/1732454
Ihre Strings trägt Kuh vor allem.
query parameter aus ner url raussuchen? gute wahl.
War genau das wofür ich es jetzt gebraucht habe. Das ist wirklich enorm angenehm. Was auch gut geht ist, wenn man Nutzer Eingaben parsen will.
Regexe sind zwar für die meisten schnell-und-dreckig Anwendungsfälle phänomenal nützlich aber insgesamt gesehen immer nich sehr eingeschränkt, was die parsebaren Sprachen angeht.
Ob härtere Geschütze aufgefahren werden müssen, merkt man meist, wenn das mit den Regexen absolut schmerzhaft wird oder gar nicht mehr so recht klappen will (versuch z.B. mal, einen Regex zu schreiben, der Worte der Form 0…01…1 erkennt, wobei die Anzahl der 0er und 1er gleich ist; diese Sprache ist nämlich nicht regulär und ohne Regex-Erweiterungen gar nicht über Regexe erkennbar). Eine solche Eskalationsstufe stellen PEGs dar. Falls das nix bringt kann man immer noch mit lex und yacc sich nen eigenen parser generieren lassen aber in die Situation kommt man eher selten.
In diesem Sinne viel Spaß mit regulären Ausrücken, mögen sie dir bei den nächsten Codierherausforderungen das Leben vereinfachen!
Du bist drin für eine gute Zeit: regexcrossword.com
Das ist jetzt ziemlich kontextfrei
Made my day , danke 🤣
EntCYKender Scherz!
Gute Webseite, um Regex-Patterns auszuprobieren und erklärt zu bekommen: https://regex101.com/
Kenne die schon. Ist auch gut, weil man direkt die an einem Test String ausprobieren kann.
Falls du nicht schon was Ähnliches hast, hier mein Lieblingsspielplatz zum Ausprobieren: https://regexr.com/
Ich habe bis jetzt immer regex101.com genutzt.
Ich habe mich damit schon öfters beschäftigt. Die grundsätzliche Funktionsweise macht schon Sinn, aber die Syntax wirklich zu verstehen und es sich dann auch noch zu merken finde ich sehr schwierig - jedes Mal, wenn ich es brauche, krebse ich wieder rum. Entsprechend benutze ich wenn möglich was anderes, Regex ist ja nicht die einzige Syntax zum Pattern Matching.
Nicht zu vergessen, die drölfzig verschiedenen Dialekte, und der Fakt dass das Werkzeug das Du gerade nutzen willst leider genau diese eine Funktion nicht unterstützt oder hinter einem neuen obskuren Sonderzeichen versteckt, dass es nicht auf Deiner Tastatur gibt.
Regex ist ja nicht die einzige Syntax zum Pattern Matching.
Jetzt muss ich mal meine mangelnde Bildung offenbaren: welche Alternativen gäbe es da?
Parser Combinators, beispielsweise: https://docs.rs/nom/latest/nom/
In der stdlib von Haskell gibt es im Vergleich zu den meisten anderen keine Regex Implementation, in der Sprache ist es üblich stattdessen mit Parser Combinators zu arbeiten.
Puh, hatte nicht erwartet, dass du das mit “Syntax zum Pattern Matching” meinst. Das ist ja schon ein vollwertiger Parser. 😅
So halb. Man kann damit Parser bauen. Andererseits - was ist eine Regex wenn nicht ein kleiner Parser?
Naja, Regex ist ja erstmal nur die Syntax zur Beschreibung eines Textes. Das muss ja dann ein Parser noch interpretieren und damit etwas machen.
Bei so einem Parser Combinator purzelt ja direkt ein Parser-Programm heraus, wenn ich das richtig verstehe. Also ja, da gibt es auch eine gewisse Syntax, die auch die Struktur des zu parsenden Textes irgendwo widerspiegelt, aber es ist nicht nur eine Beschreibung des Textes, sondern formuliert direkt die Parser-Logik.
Also ja, wenn man sowieso ein Programm schreibt, macht es wahrscheinlich keinen großen Unterschied. Aber gibt es ja schon auch oft, dass man ein bestehendes Programm hat und da nur noch ein Regex mitgeben kann, um das Verhalten zu konfigurieren…
Also wenn man konkret auf Dateipfade matchen will, dann sind Glob-Patterns das Mittel der Wahl. Sieht dann so aus:
/home/fr*/Downloads/
Der Stern ist dann eben ein Wildcard, so dass du damit z.B. dieDownloads-Verzeichnisse der Benutzerfranzundfridolinlöschen könntest.Sonst kenne ich persönlich eigentlich nur immer so Einzelphänomene, also wo’s dann für eine Programmiersprache eine Bibliothek gibt, womit man dann ein Pattern z.B. mittels einer Builder-API zusammensetzen kann.
Die können dann oft auch zu einem Regex übersetzt werden, so dass man sie in bestehende APIs reinwerfen kann, die eben ein Regex erwarten.
Keine Ahnung, persönlich finde ich nicht, dass man sich dadurch das Erlernen von Regex sparen kann…Pearl Regex ;)
Du machst mich weinend 😭
Wenn Regenechsen die Lösung zu deinem Problem sind, dann ist drin Problem falsch.
Ich liebe Regex, aber es ist gleichzeitig ein gutes Beispiel für
Write-OnlySchreib-Nur-DatenIch wünsche viel Spaß, die in Programmen zu verwenden. Grüße gehen raus an den String
\\\\Dann warte mal ab! Das zweite und dritte Mal werden noch besser!








