si intento estasoportes que se escapan en Clojure
(import java.util.regex.Pattern)
(Pattern/compile ")[email protected]#$%^&*()")
o esta
(def p #")[email protected]#$%^&*()")
He Clojure quejaba de que hay una inigualable/no cerrada )
. ¿Por qué se evalúan los corchetes dentro de esta cadena simple? ¿Cómo escapar de ellos? Gracias
EDITAR: Mientras escapaba obras en la sintaxis de la clojure específica (#""
), que no funciona con la sintaxis Pattern/compile
que yo necesito porque tengo que compilar el golpeteo expresión regular dinámicamente a partir de una cadena.
He tratado con re-pattern
, pero no puedo escapar adecuadamente por alguna razón:
(re-pattern "\)[email protected]#$%^&*\(\)")
java.lang.Exception: Unsupported escape character: \)
java.lang.Exception: Unable to resolve symbol: ! in this context (NO_SOURCE_FILE:0)
java.lang.Exception: No dispatch macro for: $
java.lang.Exception: Unable to resolve symbol: % in this context (NO_SOURCE_FILE:0)
java.lang.IllegalArgumentException: Metadata can only be applied to IMetas
EDIT 2 Esta pequeña función puede ayudar a:
(defn escape-all [x]
(str "\\" (reduce #(str %1 "\\" %2) x)))
Como nota aparte, no creo que necesite la importación, solo podría usar la función 're-pattern' de Clojure. –
tienes razón. aún así, no puedo hacer que funcione. ver mi edición, por favor. – pistacchio