Case Insensitive Regex for Clojure
Thursday, March 24th, 2016One of the things that I find I need to do every now and then is to have a case-insensitive regex pattern match in clojure, and I always have to spend 15 mins looking for it on the net. Not that it's hard to find, but it's 15 mins, and if I know I wrote about it here, then I can do a much quicker search, and get the same answer.
The key is that the Java regex parser recognizes two interesting options to the source for the regex: (?i) and (?iu). The first, (?i), is the flag to indicate that the entire regex is to be considered case-insensitive. The second, (?iu) is for unicode support.
So how's it work?
(re-find #"Cook" "This is how to cook.") => nil (re-find #"(?i)Cook" "This is how to cook.") => "cook"
It's simple and easy, and typically saves you from calling lcase on the string before the regex test.