使用模式和匹配器搜索特殊字符(例如:$)

时间:2018-11-20 01:34:19

标签: java regex pattern-matching

很抱歉,如果已经回答。

我正在使用以下代码搜索子字符串:

String subject = "ABC"
String subString = "AB"
Pattern pattern = Pattern.compile(subString, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(subject);

while (matcher.find()){
//Matched
}

但是当我的主题字符串开头包含$时,由于它是一个特殊字符,因此它不起作用。

String subject = "$ABC"
String subString = "$"

如何处理?

2 个答案:

答案 0 :(得分:3)

通过转义subString中的特殊字符。喜欢,

String subString = "\\$";

告诉Pattern匹配文字。喜欢,

Pattern pattern = Pattern.compile(subString, Pattern.LITERAL | Pattern.CASE_INSENSITIVE);

答案 1 :(得分:1)

正则表达式中很少有元字符。 Java中的正则表达式支持的其中一些是

( ) [ ] { { \ ^ $ | ? * + . < > - = !

所以 $ 在这里确实是一个元字符。元字符向正则表达式引擎传达了特殊的含义,因此不能从字面上使用。因此,要使用它们,您必须将它们与反斜杠 \

结合使用

所以String subject = "\\$ABC" String subString = "\\$"

会的。与其他正则表达式引擎不同,Java使用双反斜杠而不是单斜杠来转义字符。