我正试图让我的代码忽略它正在阅读的一些行。我的SSCE就是这样:
public class testRegex {
private static final String DELETE_REGEX = "\\{\"delete"; //escape the '{', escape the ' " '
private static final String JSON_FILE_NAME = "example";
public static void main(String[] args){
String line = null;
try{
BufferedReader buff = new BufferedReader (new FileReader(JSON_FILE_NAME + ".json"));
line = buff.readLine buff.close();
}catch (FileNotFoundException e){e.printStackTrace();}
catch (IOException e){e.printStackTrace();}
String line=buff.readLine();
System.out.println(line.contains(DELETE_REGEX));
}
}
我的文件只包含以下行:
{"delete":{"status":{"user_id_str":"123456789","user_id":123456789,"id_str":"987654321","id":987654321}}}
但是这打印出错......我的正则表达式错了吗?我通过{
与\\{
进行匹配来匹配"\(hello\)"
,因为它建议here。
字符串文字
"\\(hello\\)"
是非法的,会导致编译时错误;为了匹配字符串(hello),必须使用字符串文字"
。
我使用\"
转义line = "\{\"delete"
。
那么如何修复我的程序?
* P.S。我试过手动输入{{1}}(不需要双重转义,因为行是字符串而不是正则表达式),我得到相同的结果。
答案 0 :(得分:6)
String.contains()执行完全匹配,而不是正则表达式搜索。不要逃避{撑杆。
答案 1 :(得分:1)