コードが読み取っているいくつかの行を無視するようにコードを取得しようとしています。したがって、私の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}}}
しかし、これはfalseを出力します...私の正規表現は間違っていますか? ここでアドバイスされているよう{
に、ダブルエスケープして一致させています。\\{
文字列リテラル
"\(hello\)"
は不正であり、コンパイル エラーが発生します。文字列 (hello) と一致させるには、文字列リテラル"\\(hello\\)"
を使用する必要があります。
そして、"
を使用してエスケープし\"
ます。
では、どうすればプログラムを修正できますか?
*ps手動で入力しようとしましたline = "\{\"delete"
(行は正規表現ではなく文字列であるため、エスケープを二重にする必要はありません)が、同じ結果が得られました。