Java 正则表达式和美元符号

2022-09-01 17:53:15

我有Java字符串:

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

我还生成了要匹配此字符串的模式:

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

当我说它返回.现在我知道美元符号是Java正则表达式的一部分,但我不知道我的模式应该是什么样子。我假设$in模式需要用一些转义字符替换,但不知道有多少。这个$符号对我来说很重要,因为它可以帮助我区分列表中的元素(美元之后的数字),我不能没有它。b.matches(pattern)false


答案 1

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

自动转义给定字符串中的所有特殊正则表达式字符


答案 2

您需要在正则表达式中使用反斜杠 () 进行转义,但由于反斜杠是字符串中的转义字符,因此您需要对反斜杠本身进行转义。$\

您将需要以相同的方式转义任何特殊的正则表达式字符,例如使用“.”。

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