Clojure:
Usando expresiones regulares
Cómo hacerlo:
Clojure, manteniéndose fiel a sus raíces en la familia Lisp, ofrece un rico conjunto de funciones que se interfazan sin problemas con las capacidades de expresiones regulares de Java. Aquí te mostramos cómo puedes aprovecharlas:
Coincidencia Básica
Para verificar si una cadena coincide con un patrón, usa re-matches
. Devuelve la coincidencia completa si tiene éxito o nil
en caso contrario.
(re-matches #"\d+" "123") ;=> "123"
(re-matches #"\d+" "abc") ;=> nil
Buscando Patrones
Para encontrar la primera ocurrencia de un patrón, re-find
es tu función a utilizar:
(re-find #"\d+" "Orden 123") ;=> "123"
Grupos de Captura
Utiliza re-find
junto con paréntesis en tu patrón para capturar grupos:
(let [[_ área código] (re-find #"(1)?(\d{3})" "Teléfono: 123-4567")]
(println "Código de Área:" área "Código:" código))
;; Salida: Código de Área: nil Código: 123
Búsqueda Global (Encontrar Todas las Coincidencias)
Clojure no tiene una búsqueda global incorporada como algunos lenguajes. En su lugar, usa re-seq
para obtener una secuencia perezosa de todas las coincidencias:
(re-seq #"\d+" "id: 123, cant: 456") ;=> ("123" "456")
Dividiendo Cadenas
Para dividir una cadena basada en un patrón, usa clojure.string/split
:
(clojure.string/split "John,Doe,30" #",") ;=> ["John" "Doe" "30"]
Reemplazando
Reemplaza partes de una cadena que coincidan con un patrón con clojure.string/replace
:
(clojure.string/replace "2023-04-01" #"\d{4}" "AAAA") ;=> "AAAA-04-01"
Bibliotecas de Terceros
Aunque el soporte integrado de Clojure es suficiente para la mayoría de los casos, para escenarios más complejos, considera usar bibliotecas como clojure.spec
para una validación de datos robusta y reagent
para manipulación del DOM reactiva en aplicaciones web con enrutamiento basado en regex y validación de entrada.
;; Ejemplo usando clojure.spec para validar un correo electrónico
(require '[clojure.spec.alpha :as s])
(s/def ::email (s/and string? #(re-matches #".+@.+\..+" %)))
(s/valid? ::email "[email protected]") ;=> true
Recuerda, mientras que las expresiones regulares son poderosas, también pueden hacer que el código sea difícil de leer y mantener. Úsalas con juicio y siempre considera funciones de manipulación de cadenas más simples cuando sea posible.