0

二重引用符で囲まれた String があります""。削除する必要がある内側の二重引用符があります。これの正規表現は何ですか?

例えば:

input: "こんにちは、今夜到着します" ---> output: "こんにちは、今夜到着します"
input: "こんにちは、今夜到着します" ---> output: "こんにちは、今夜到着します"
input: ""こんにちは" 今夜到着します" ---> 出力: "こんにちは、今夜到着します"

次のコードを試してみましたが、例 2 と 3 では機能しません。例 1 では機能します。

data.replaceAll("\"(\\b[^\"]+)?\"\\b([^\"]+)\\b\"([^\"]+\\b)?\"","\"$1$2$3\"");

背景: 解析する必要がある CSV ファイルがあります。データには、外側の引用符の内側に内側の引用符が付いています。例えば:

"aa","bb","cc","dd "REMOVE QUOTES" "
"aaa","bbb","ccc",""REMOVE QUOTES" ddd "

正規表現で内側の引用符のみを削除し、外側の引用符を保持したいと思います。出力:

"aa","bb","cc","dd REMOVE QUOTES "
"aaa","bbb","ccc","REMOVE QUOTES ddd "
4

3 に答える 3

2

否定的な後読みと先読みを組み合わせて使用​​できます。

data = data.replaceAll("(?<!^)\"(?!$)", "")
  • (?<!^)行頭の否定後読み
  • (?!$)の否定先読みEOL
于 2013-04-24T01:19:59.627 に答える
1

これを試してみてください。外側の引用符を無視して内側の文字列を取得し、すべての引用符を削除して外側の引用符を追加します。

String input1 = "\"Hello there \"I arrive\" tonight\"";
String output1 = "\"" + input1.substring(1, input1.length() - 1).replaceAll("\"", "") + "\"";
System.out.println(output1);

出力

「こんにちは、今夜着きます」

于 2013-04-24T01:23:44.323 に答える
0

文字列が最初の " で始まり、最後の " で終わると仮定すると、これを正規表現の方法として使用できます。

data.replaceAll("(?<!^)\"(?!$)", "");
于 2013-04-24T01:35:46.153 に答える