How do I escape "*"
to "\*"
in clojure? Can't seem to get it to work:
(s/replace "A*B" #"*" "*")
produces "A*B"
(of course)
(s/replace "A*B" #"*" "\*")
fails: Unsupported escape character: *
(s/replace "A*B" #"*" "\\*")
produces "A*B"
again!
(s/replace "A*B" #"*" "\\\*")
fails: Unsupported escape character: *
again!
(s/replace "A*B" #"\\\\*" "*")
produces "A\\*B"
I can't get it to produce A\*B
Any ideas? Thanks
You have to use 4 backslashes:
> (println (clojure.string/replace "A*B" #"\*" "\\\\*"))
A\*B
nil
>
or, without a regex, it's simply:
> (println (clojure.string/replace "A*B" "*" "\\*"))
A\*B
nil
>
To use this as a regex pattern, use the re-pattern
function:
> (def p (clojure.string/replace "A*B" #"\*" "\\\\*"))
#'sandbox17459/p
> (println p)
A\*B
nil
> (clojure.string/replace "BLA*BLA" (re-pattern p) "UH")
"BLUHLA"
>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With