3

我试图让我的代码忽略它正在阅读的一些行。因此,我的 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\)"是非法的,会导致编译时错误;为了匹配字符串 (hello),"\\(hello\\)"必须使用字符串文字。

"使用\".

那么我该如何修复我的程序呢?

*ps 我试过手动输入line = "\{\"delete"(不需要双重转义,因为行是字符串而不是正则表达式),我得到了相同的结果。

4

2 回答 2

6

String.contains() 执行完全匹配,而不是正则表达式搜索。不要转义 { 大括号。

于 2012-09-27T14:55:07.767 回答
1

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

简单地做

line.contains("{\"delete")
于 2012-09-27T14:55:30.077 回答