Säännöllisten lausekkeiden käyttö

Clojure:
Säännöllisten lausekkeiden käyttö

Kuinka:

Clojure, pysyen uskollisena juurilleen Lisp-perheessä, tarjoaa rikkaan joukon funktioita, jotka integroituvat saumattomasti Javan säännöllisten lausekkeiden ominaisuuksiin. Tässä on, miten voit hyödyntää niitä:

Perustason Vastaavuuden Tarkistus

Tarkistaaksesi vastaako merkkijono kuviota, käytä re-matches. Se palauttaa koko vastineen, jos onnistuu, tai nil muussa tapauksessa.

(re-matches #"\d+" "123")  ;=> "123"
(re-matches #"\d+" "abc")  ;=> nil

Kuvioiden Etsiminen

Etsiäksesi ensimmäistä kuvion esiintymää, käytä funktiota re-find:

(re-find #"\d+" "Tilaus 123")  ;=> "123"

Kaappaavat Ryhmät

Käytä re-find funktiota yhdessä sulkujen kanssa kuviossasi kaappaavien ryhmien toteuttamiseksi:

(let [[_ alue koodi] (re-find #"(1)?(\d{3})" "Puhelin: 123-4567")]
  (println "Aluekoodi:" alue "Koodi:" koodi))
;; Tuloste: Aluekoodi: nil Koodi: 123

Globaali Etsintä (Löydä Kaikki Vastineet)

Clojuressa ei ole sisäänrakennettua globaalia etsintätoimintoa kuten joissakin kielissä. Käytä sen sijaan re-seq toimintoa saadaksesi laiskan sekvenssin kaikista vastineista:

(re-seq #"\d+" "id: 123, qty: 456")  ;=> ("123" "456")

Merkkijonojen Jakaminen

Jaksaaksesi merkkijonon perustuen kuvioon, käytä clojure.string/split:

(clojure.string/split "John,Doe,30" #",")  ;=> ["John" "Doe" "30"]

Korvaaminen

Korvaa merkkijonon osia vastaavalla kuvioinnilla clojure.string/replace avulla:

(clojure.string/replace "2023-04-01" #"\d{4}" "YYYY")  ;=> "YYYY-04-01"

Kolmannen osapuolen Kirjastot

Vaikka Clojuren sisäänrakennettu tuki riittää useimmissa tapauksissa, monimutkaisempiin skenaarioihin kannattaa harkita kirjastojen, kuten clojure.spec robustin datan validoinnin ja reagent reaktiivisen DOM-manipuloinnin käyttöä web-sovelluksissa regex-pohjaisella reitityksellä ja syötteen validoinnilla.

;; Esimerkki käyttäen clojure.spec validoidakseen sähköpostin
(require '[clojure.spec.alpha :as s])
(s/def ::email (s/and string? #(re-matches #".+@.+\..+" %)))
(s/valid? ::email "[email protected]")  ;=> true

Muista, vaikka säännölliset lausekkeet ovat tehokkaita, ne voivat myös tehdä koodista vaikealukuista ja ylläpidettävää. Käytä niitä harkiten ja harkitse aina yksinkertaisempia merkkijonojen käsittelyfunktioita, jos mahdollista.