Clojure:
Reguläre Ausdrücke verwenden
Wie geht das:
Clojure, seiner Wurzeln in der Lisp-Familie treu bleibend, bietet einen reichen Satz an Funktionen, die nahtlos mit den Fähigkeiten von Java in Bezug auf reguläre Ausdrücke interagieren. Hier ist, wie Sie diese nutzen können:
Einfache Übereinstimmung
Um zu überprüfen, ob ein String einem Muster entspricht, verwenden Sie re-matches. Es gibt die gesamte Übereinstimmung zurück, wenn erfolgreich, oder nil andernfalls.
(re-matches #"\d+" "123") ;=> "123"
(re-matches #"\d+" "abc") ;=> nilNach Mustern suchen
Um das erste Vorkommen eines Musters zu finden, ist re-find Ihre Funktion der Wahl:
(re-find #"\d+" "Bestellung 123") ;=> "123"Erfassungsgruppen
Verwenden Sie re-find zusammen mit Klammern in Ihrem Muster, um Gruppen zu erfassen:
(let [[_ area code] (re-find #"(1)?(\d{3})" "Telefon: 123-4567")]
(println "Vorwahl:" area "Code:" code))
;; Ausgabe: Vorwahl: nil Code: 123Globale Suche (Alle Übereinstimmungen finden)
Clojure hat keine eingebaute globale Suche wie einige Sprachen. Verwenden Sie stattdessen re-seq, um eine faule Sequenz aller Übereinstimmungen zu erhalten:
(re-seq #"\d+" "id: 123, Menge: 456") ;=> ("123" "456")Strings teilen
Um einen String basierend auf einem Muster zu teilen, verwenden Sie clojure.string/split:
(clojure.string/split "John,Doe,30" #",") ;=> ["John" "Doe" "30"]Ersetzen
Ersetzen Sie Teile eines Strings, die einem Muster entsprechen, mit clojure.string/replace:
(clojure.string/replace "2023-04-01" #"\d{4}" "JJJJ") ;=> "JJJJ-04-01"Drittanbieter-Bibliotheken
Obwohl Clojure’s eingebaute Unterstützung in den meisten Fällen ausreicht, sollten Sie für komplexere Szenarien Bibliotheken wie clojure.spec für robuste Datenvalidierung und reagent für reaktive DOM-Manipulation in Webanwendungen mit regex-basierter Routing- und Eingabevalidierung in Erwägung ziehen.
;; Beispiel mit clojure.spec für die Validierung einer E-Mail
(require '[clojure.spec.alpha :as s])
(s/def ::email (s/and string? #(re-matches #".+@.+\..+" %)))
(s/valid? ::email "[email protected]") ;=> wahrDenken Sie daran, obwohl reguläre Ausdrücke mächtig sind, können sie auch den Code schwer lesbar und wartbar machen. Verwenden Sie sie mit Bedacht und ziehen Sie immer einfachere String-Manipulationsfunktionen wo möglich in Betracht.