很抱歉,如果已经回答。
我正在使用以下代码搜索子字符串:
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 = "$"
如何处理?
答案 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使用双反斜杠而不是单斜杠来转义字符。