Expresiones regulares de Java y signo de dólar

Tengo una cadena de Java:

String b = "/feedback/com.school.edu.domain.feedback.Review$0/feedbackId"); 

También he generado un patrón contra el cual quiero hacer coincidir esta cadena:

 String pattern = "/feedback/com.school.edu.domain.feedback.Review$0(.)*"; 

Cuando digo b.matches(pattern) , devuelve false . Ahora sé que el signo de dólar es parte de Java RegEx, pero no sé cómo debería ser mi patrón. Asumo que $ en el patrón debe ser reemplazado por algunos caracteres de escape, pero no sé cuántos. Este signo $ es importante para mí, ya que me ayuda a distinguir los elementos en la lista (números después del dólar), y no puedo prescindir de él.

Necesitas escapar $ en la expresión regular con una barra invertida ( \ ), pero como una barra diagonal inversa es un carácter de escape en cadenas, debes escapar de la barra diagonal inversa.

Deberá escapar de cualquier carácter especial de expresión regular de la misma manera, por ejemplo con “.”.

 String pattern = "/feedback/com\\.navteq\\.lcms\\.common\\.domain\\.poi\\.feedback\\.Review\\$0(.)*"; 

Utilizar

 String escapedString = java.util.regex.Pattern.quote(myString) 

para escapar automáticamente todos los caracteres especiales de expresiones regulares en una cadena dada.

En Java regex ambos . y $ son especiales. Necesitas escapar con 2 barras diagonales inversas, es decir.

 "/feedback/com\\.navtag\\.etc\\.Review\\$0(.*)" 

(1 barra invertida es para la cadena de Java, y 1 es para el motor de expresiones regulares).

Escape del dólar con \

 String pattern = "/feedback/com.navteq.lcms.common.domain.poi.feedback.Review\\$0(.)*"; 

Te aconsejo que escapes . también,. representar cualquier personaje.

 String pattern = "/feedback/com\\.navteq\\.lcms\\.common\\.domain\\.poi\\.feedback\\.Review\\$0(.)*";