Java正则expression式和美元符号
我有Javastring:
String b = "/feedback/com.school.edu.domain.feedback.Review$0/feedbackId");
我也产生了模式,我想匹配这个string:
String pattern = "/feedback/com.school.edu.domain.feedback.Review$0(.)*";
当我说b.matches(pattern)
它返回false
。 现在我知道美元符号是Java RegEx的一部分,但我不知道我的模式应该如何。 我假设$模式需要被一些转义字符replace,但是不知道有多less。 这个$符号对我来说很重要,因为它帮助我区分列表中的元素(美元之后的数字),而且我不能没有它。
你需要在正则expression式中用反斜杠( \
)来转义$
,但是作为反斜杠是string中的转义符,你需要转义反斜杠本身。
您将需要以相同的方式转义任何特殊的正则expression式字符,例如“。”。
String pattern = "/feedback/com\\.navteq\\.lcms\\.common\\.domain\\.poi\\.feedback\\.Review\\$0(.)*";
使用
String escapedString = java.util.regex.Pattern.quote(myString)
自动转义给定string中的所有特殊的正则expression式字符 。
在Java的正则expression式两个.
和$
是特别的。 你需要用2个反斜杠,即。
"/feedback/com\\.navtag\\.etc\\.Review\\$0(.*)"
(1个反斜杠用于Javastring,1个用于正则expression式引擎。)
用美元逃脱美元
String pattern = "/feedback/com.navteq.lcms.common.domain.poi.feedback.Review\\$0(.)*";
我build议你逃脱.
还有, .
代表任何angular色。
String pattern = "/feedback/com\\.navteq\\.lcms\\.common\\.domain\\.poi\\.feedback\\.Review\\$0(.)*";