Escaping Special Characters in a Pattern

Any nonalphanumeric character can be escaped with a backslash to remove it's special meaning (if any). This example implements a method that escapes all nonalphanumeric characters. This method is useful when the pattern is retrieved programmatically and it is necessary to search for the pattern literally.

Another method of escaping the characters in a pattern is to surround the pattern with \Q and \E. The only thing to watch out for is the presence of \E in the pattern, which would end the escaping of the pattern.

String patternStr = "i.e."; boolean matchFound = Pattern.matches(patternStr, "i.e.");// true matchFound = Pattern.matches(patternStr, "ibex"); // true // Quote the pattern; i.e. surround with \Q and \E matchFound = Pattern.matches("\\Q"+patternStr+"\\E", "i.e."); // true matchFound = Pattern.matches("\\Q"+patternStr+"\\E", "ibex"); // false // Escape the pattern patternStr = escapeRE(patternStr); // i\.e\. matchFound = Pattern.matches(patternStr, "i.e."); // true matchFound = Pattern.matches(patternStr, "ibex"); // false // Returns a pattern where all punctuation characters are escaped. static Pattern escaper = Pattern.compile("([^a-zA-z0-9])"); public static String escapeRE(String str) { return escaper.matcher(str).replaceAll("\\\\$1"); }

Post a comment

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image. Ignore spaces and be careful about upper and lower case.