Das ist echt gar nicht so schwer wie ich immer dachte. Werde das glaube zum üben jetzt häufiger nutzen.

  • 𝔻𝕒𝕧𝕖@lemmy.world
    link
    fedilink
    arrow-up
    24
    ·
    8 hours ago

    Manche Menschen denken, wenn sie mit einem Problem konfrontiert werden: „Ich weiß, ich verwende Regex.“ Jetzt haben sie zwei Probleme.

    • da_cow (she/her)@feddit.orgOP
      link
      fedilink
      arrow-up
      8
      ·
      7 hours ago

      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)

      • azolus@slrpnk.net
        link
        fedilink
        English
        arrow-up
        2
        ·
        5 hours ago

        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!

      • Dunstabzugshaubitze@feddit.org
        link
        fedilink
        arrow-up
        9
        ·
        7 hours ago

        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.

  • rumschlumpel@feddit.org
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    7 hours ago

    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.

    • optional@feddit.org
      link
      fedilink
      arrow-up
      2
      ·
      3 hours ago

      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.

    • Kornblumenratte@feddit.org
      link
      fedilink
      arrow-up
      4
      ·
      7 hours ago

      Regex ist ja nicht die einzige Syntax zum Pattern Matching.

      Jetzt muss ich mal meine mangelnde Bildung offenbaren: welche Alternativen gäbe es da?

        • Ephera@lemmy.ml
          link
          fedilink
          Deutsch
          arrow-up
          1
          ·
          5 hours ago

          Puh, hatte nicht erwartet, dass du das mit “Syntax zum Pattern Matching” meinst. Das ist ja schon ein vollwertiger Parser. 😅

      • Ephera@lemmy.ml
        link
        fedilink
        Deutsch
        arrow-up
        2
        ·
        6 hours ago

        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. die Downloads-Verzeichnisse der Benutzer franz und fridolin lö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 nicht, dass man sich dadurch das Erlernen von Regex sparen kann…