Clojure:
Використання регулярних виразів
Як:
Clojure, залишаючись вірним своїм корінням у сімействі Lisp, пропонує багатий набір функцій, що безперебійно інтегруються з можливостями регулярних виразів Java. Ось як ви можете їх використовувати:
Базове співставлення
Щоб перевірити, чи рядок відповідає шаблону, використовуйте re-matches
. Вона повертає повний збіг у разі успіху або nil
в іншому випадку.
(re-matches #"\d+" "123") ;=> "123"
(re-matches #"\d+" "abc") ;=> nil
Пошук за шаблонами
Щоб знайти перше входження шаблону, вашим інструментом буде re-find
:
(re-find #"\d+" "Order 123") ;=> "123"
Захоплення груп
Використовуйте re-find
разом з дужками у вашому шаблоні, щоб захопити групи:
(let [[_ area code] (re-find #"(1)?(\d{3})" "Phone: 123-4567")]
(println "Код регіону:" area "Код:" code))
;; Вивід: Код регіону: nil Код: 123
Глобальний пошук (Знайти всі збіги)
Clojure не має вбудованого глобального пошуку, як деякі мови. Натомість, використовуйте re-seq
для отримання лінивої послідовності всіх збігів:
(re-seq #"\d+" "id: 123, qty: 456") ;=> ("123" "456")
Розбиття рядків
Щоб розділити рядок за допомогою шаблону, використовуйте clojure.string/split
:
(clojure.string/split "John,Doe,30" #",") ;=> ["John" "Doe" "30"]
Заміна
Замінюйте частини рядка, що відповідають шаблону, за допомогою clojure.string/replace
:
(clojure.string/replace "2023-04-01" #"\d{4}" "YYYY") ;=> "YYYY-04-01"
Сторонні бібліотеки
Хоча вбудована підтримка Clojure достатня для більшості випадків, для більш складних сценаріїв розгляньте використання бібліотек, таких як clojure.spec
для надійної валідації даних та reagent
для реактивної маніпуляції DOM у веб-додатках з маршрутизацією та валідацією вводу на основі регулярних виразів.
;; Приклад використання clojure.spec для валідації електронної пошти
(require '[clojure.spec.alpha :as s])
(s/def ::email (s/and string? #(re-matches #".+@.+\..+" %)))
(s/valid? ::email "[email protected]") ;=> true
Пам’ятайте, хоча регулярні вирази є потужними, вони також можуть зробити код важким для читання та підтримки. Використовуйте їх помірковано та завжди розглядайте спрощені функції маніпуляції рядками, де це можливо.