Clojure:
Korzystanie z wyrażeń regularnych
Jak to zrobić:
Clojure, pozostając wiernym swoim korzeniom z rodziny Lisp, oferuje bogaty zestaw funkcji, które bezproblemowo współpracują z możliwościami wyrażeń regularnych Javy. Oto jak możesz z nich korzystać:
Podstawowe dopasowywanie
Aby sprawdzić, czy ciąg znaków pasuje do wzorca, użyj re-matches
. Zwraca całe dopasowanie w przypadku sukcesu lub nil
w przeciwnym razie.
(re-matches #"\d+" "123") ;=> "123"
(re-matches #"\d+" "abc") ;=> nil
Wyszukiwanie wzorców
Aby znaleźć pierwsze wystąpienie wzorca, re-find
jest funkcją, do której powinieneś się zwrócić:
(re-find #"\d+" "Zamówienie 123") ;=> "123"
Grupy przechwytujące
Użyj re-find
wraz z nawiasami w swoim wzorcu, aby przechwycić grupy:
(let [[_ area code] (re-find #"(1)?(\d{3})" "Telefon: 123-4567")]
(println "Kod obszaru:" area "Kod:" code))
;; Wyjście: Kod obszaru: nil Kod: 123
Wyszukiwanie globalne (Znajdź wszystkie dopasowania)
Clojure nie ma wbudowanego globalnego wyszukiwania, jak niektóre języki. Zamiast tego użyj re-seq
aby otrzymać leniwą sekwencję wszystkich dopasowań:
(re-seq #"\d+" "id: 123, ilość: 456") ;=> ("123" "456")
Dzielenie ciągów znaków
Aby podzielić ciąg znaków na podstawie wzorca, użyj clojure.string/split
:
(clojure.string/split "Jan,Kowalski,30" #",") ;=> ["Jan" "Kowalski" "30"]
Zamiana
Zamień części ciągu znaków pasujące do wzorca za pomocą clojure.string/replace
:
(clojure.string/replace "2023-04-01" #"\d{4}" "RRRR") ;=> "RRRR-04-01"
Biblioteki firm trzecich
Chociaż wbudowane wsparcie Clojure wystarcza w większości przypadków, dla bardziej złożonych scenariuszy, rozważ użycie bibliotek takich jak clojure.spec
dla solidnej walidacji danych i reagent
do reaktywnej manipulacji DOM w aplikacjach internetowych z wykorzystaniem wyrażeń regularnych do routingu i walidacji danych wejściowych.
;; Przykład użycia clojure.spec do walidacji adresu email
(require '[clojure.spec.alpha :as s])
(s/def ::email (s/and string? #(re-matches #".+@.+\..+" %)))
(s/valid? ::email "[email protected]") ;=> true
Pamiętaj, że choć wyrażenia regularne są potężne, mogą również sprawić, że kod będzie trudny do odczytania i utrzymania. Używaj ich z rozwagą i zawsze rozważ prostsze funkcje manipulacji ciągami znaków, jeśli jest to możliwe.