regex: ¿Cómo escapar de las barras invertidas y los caracteres especiales?

¿Hay alguna forma de escapar (o proteger) caracteres especiales en una expresión regular?

Lo que me gustaría hacer es crear un simple probador de expresiones regulares:

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] ) );
   }
}

Lo que funciona muy bien para probar mis patrones antes de conectarlos al programa:

$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  

Lo siguiente que hago es usar este patrón en mi programa, pero cada vez que tengo que escaparlo manualmente:

Pattern p = Pattern.compile( /*copy pasted regex here */ );

Y en esta muestra, sustituya:\d con\\d. Después de un tiempo esto se vuelve muy irritante.

P. ¿Cómo puedo escapar automáticamente de estos caracteres especiales?

Respuestas a la pregunta(1)

Su respuesta a la pregunta