Java reguläre Ausdrücke und Dollarzeichen

Ich habe Java-String:

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

Ich habe auch ein Muster erzeugt, mit dem ich diese Zeichenfolge vergleichen möchte:

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

Wenn ich b.matches(pattern) sage, b.matches(pattern) es false . Jetzt weiß ich, Dollarzeichen ist Teil von Java RegEx, aber ich weiß nicht, wie mein Muster aussehen soll. Ich gehe davon aus, dass $ in Muster durch einige Escape-Zeichen ersetzt werden muss, aber nicht wie viele. Dieses $ -Zeichen ist mir wichtig, da es mir hilft, Elemente in der Liste zu unterscheiden (Zahlen nach Dollar), und ich kann nicht ohne sie auskommen.

   

Sie müssen $ in der Regex mit einem umgekehrten Schrägstrich ( \ ) entkommen lassen, aber da ein Backslash ein Escape-Zeichen in Strings ist , müssen Sie den Backslash selbst umgehen.

Sie müssen einen speziellen Regex-Char auf die gleiche Art und Weise entkommen lassen, zum Beispiel mit “.”.

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

Benutzen

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

um automatisch alle speziellen Regex-Zeichen in einer gegebenen Zeichenkette zu entfernen .

In Java regex beides . und $ sind besonders. Sie müssen es mit 2 Backslashes, dh zu entkommen.

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

(1 Backslash ist für die Java-Zeichenfolge und 1 ist für die Regex-Engine.)

Entkomme den Dollar mit \

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

Ich rate dir, zu fliehen . ebenso . repräsentieren ein beliebiges Zeichen.

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