Espressioni regolari di Java e simbolo del dollaro

Ho una stringa Java:

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

Ho anche generato pattern contro il quale voglio abbinare questa stringa:

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

Quando dico b.matches(pattern) restituisce false . Ora so che il simbolo del dollaro fa parte di Java RegEx, ma non so come dovrebbe essere il mio modello. Suppongo che $ in pattern debba essere sostituito da alcuni caratteri di escape, ma non so quanti. Questo segno $ è importante per me in quanto mi aiuta a distinguere gli elementi nella lista (numeri dopo dollaro), e non posso farne a meno.

È necessario sfuggire $ alla regex con una barra rovesciata ( \ ), ma poiché una barra rovesciata è un carattere di escape nelle stringhe è necessario sfuggire alla barra retroversa stessa.

Dovrai sfuggire a qualsiasi regex speciale nello stesso modo, ad esempio con “.”.

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

Uso

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

per scappare automaticamente tutti i caratteri speciali regex in una determinata stringa.

In Java regex entrambi . e $ sono speciali. Devi scappare con 2 backslash, es.

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

(1 backslash è per la stringa Java e 1 è per il motore regex).

Fuggi dal dollaro con \

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

Ti consiglio di scappare . pure . rappresentare qualsiasi personaggio.

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