在java中使用regex时转义'{'?

时间:2012-09-27 14:51:49

标签: java regex bufferedreader

我正试图让我的代码忽略它正在阅读的一些行。我的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}}(不需要双重转义,因为行是字符串而不是正则表达式),我得到相同的结果。

2 个答案:

答案 0 :(得分:6)

String.contains()执行完全匹配,而不是正则表达式搜索。不要逃避{撑杆。

答案 1 :(得分:1)

contains方法不会将正则表达式作为参数,因此您不必转义{

简单地做

line.contains("{\"delete")