Skip to content

Instantly share code, notes, and snippets.

@raymond-w-ko
Created March 17, 2015 02:31
Show Gist options
  • Save raymond-w-ko/691e033f4c530cb61526 to your computer and use it in GitHub Desktop.
Save raymond-w-ko/691e033f4c530cb61526 to your computer and use it in GitHub Desktop.
Clojure string escapes galore
(defn create-fuzzy-regex [s]
(-> s
;; special regex
(clojure.string/replace "?" "\\?")
(clojure.string/replace "*" "\\*")
(clojure.string/replace "+" "\\+")
(clojure.string/replace "[" "\\[")
(clojure.string/replace "]" "\\]")
(clojure.string/replace "$" "\\$")
(clojure.string/replace #"\s*\(\s*" (clojure.string/re-quote-replacement "\\s*\\(\\s*"))
(clojure.string/replace #"\s*\)\s*" (clojure.string/re-quote-replacement "\\s*\\)\\s*"))
(clojure.string/replace " & " " & ")
(clojure.string/replace #"\s*[-—–]\s*" (clojure.string/re-quote-replacement "\\s*[-—–]\\s*"))
(clojure.string/replace #"\s+" (clojure.string/re-quote-replacement "\\s+"))
(clojure.string/replace "," "\\s*,?\\s*")
(clojure.string/replace "." "\\s*\\.\\s*")
;; whole fancy quotes nonsense
(clojure.string/replace "“;" "“")
(clojure.string/replace "”;" "”")
(clojure.string/replace "'" "'")
(clojure.string/replace """ "\"")
(clojure.string/replace ">" ">")
(clojure.string/replace "<" "&lt;")
(clojure.string/replace #"[\"“”]" (clojure.string/re-quote-replacement "\\s*[\"“”]\\s*"))
(re-pattern)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment