Clojure:
Usando expressões regulares
Como:
Clojure, fiel às suas raízes na família Lisp, oferece um rico conjunto de funções que se integram perfeitamente com as capacidades de expressão regular do Java. Veja como você pode aproveitá-las:
Correspondência Básica
Para verificar se uma string corresponde a um padrão, use re-matches
. Ele retorna a correspondência completa se for bem-sucedido ou nil
caso contrário.
(re-matches #"\d+" "123") ;=> "123"
(re-matches #"\d+" "abc") ;=> nil
Pesquisando por Padrões
Para encontrar a primeira ocorrência de um padrão, re-find
é sua função de escolha:
(re-find #"\d+" "Pedido 123") ;=> "123"
Capturando Grupos
Use re-find
junto com parênteses em seu padrão para capturar grupos:
(let [[_ área código] (re-find #"(1)?(\d{3})" "Telefone: 123-4567")]
(println "Código de Área:" área "Código:" código))
;; Saída: Código de Área: nil Código: 123
Pesquisa Global (Encontrar Todas as Correspondências)
Clojure não tem uma pesquisa global embutida como algumas linguagens. Em vez disso, use re-seq
para obter uma sequência preguiçosa de todas as correspondências:
(re-seq #"\d+" "id: 123, qty: 456") ;=> ("123" "456")
Dividindo Strings
Para dividir uma string com base em um padrão, use clojure.string/split
:
(clojure.string/split "João,Doe,30" #",") ;=> ["João" "Doe" "30"]
Substituição
Substitua partes de uma string que correspondem a um padrão com clojure.string/replace
:
(clojure.string/replace "2023-04-01" #"\d{4}" "AAAA") ;=> "AAAA-04-01"
Bibliotecas de Terceiros
Embora o suporte interno de Clojure seja suficiente na maioria dos casos, para cenários mais complexos, considere usar bibliotecas como clojure.spec
para validação robusta de dados e reagent
para manipulação reativa do DOM em aplicações web com roteamento baseado em regex e validação de entrada.
;; Exemplo usando clojure.spec para validar um email
(require '[clojure.spec.alpha :as s])
(s/def ::email (s/and string? #(re-matches #".+@.+\..+" %)))
(s/valid? ::email "[email protected]") ;=> true
Lembre-se, embora as expressões regulares sejam poderosas, elas também podem tornar o código difícil de ler e manter. Use-as com parcimônia e sempre considere funções de manipulação de string mais simples quando possível.