Is there a way to escape ( or protect ) special characters in a regular expression?
What I would like to do is to create a simple regex tester:
import java.util.regex.*;
class TestRegex {
public static void main( String ... args ) {
System.out.printf("%s ~= %s ? %s %n" , args[0], args[1], Pattern.matches( args[0], args[1] ) );
}
}
Which works great to test my patterns before plug-in them into the program:
$java TestRegex "\d" 1
\d ~= 1 ? true
$java TestRegex "\d" 12
\d ~= 12 ? false
$java TestRegex "\d+" 12
\d+ ~= 12 ? true
$java TestRegex "\d+" a12
\d+ ~= a12 ? false
$java TestRegex "\d+" ""
\d+ ~= ? false
The next thing I do is to use this pattern in my program, but each time I have to manually escape it:
Pattern p = Pattern.compile( /*copy pasted regex here */ );
And in this sample, substitute: \d
with \\d
. After a while this becomes very irritating .
Q. How can I automatically escape these special characters?
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
pastebin.com/aEWSibXv – Richel