List of all special characters that need to be escaped in a regex
I am trying to create an application that matches a message template with a message that a user is trying to send. I am using Java regex for matching the message. The template/message may contain special characters.
How would I get the complete list of special characters that need to be escaped in order for my regex to work and match in the maximum possible cases?
Is there a universal solution for escaping all special characters in Java regex?
Solution 1:
You can look at the javadoc of the Pattern class: http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
You need to escape any char listed there if you want the regular char and not the special meaning.
As a maybe simpler solution, you can put the template between \Q and \E - everything between them is considered as escaped.
Solution 2:
- Java characters that have to be escaped in regular expressions are:
\.[]{}()<>*+-=!?^$|
- Two of the closing brackets (
]
and}
) are only need to be escaped after opening the same type of bracket. - In
[]
-brackets some characters (like+
and-
) do sometimes work without escape.