2

Excel セル内の二重引用符をエスケープする Java 正規表現を探しています。

私はこの例に従いましたが、正規表現を別の変更を加えて、セルの 1 つで二重引用符をエスケープできるようにする必要があります。

javaで正規表現を使用してCSV入力を解析する

private final Pattern pattern = Pattern.compile("\"([^\"]*)\"|(?<=,|^)([^,]*)(?=,|$)");

サンプルデータ:

"A,B" , "2" サイズ" , "text1,text2, text3"

上記の正規表現は で失敗し2"ます。

出力を以下のようにしたい.外側の二重引用符があるかどうかは関係ありません。

"A,B"
"2" サイズ"
"text1,text2, text3"

4

2 に答える 2

0

CVS の解析に正規表現を使用するのが最善の方法ではないことに同意しますが、少し良いパターンは次のとおりです。

Pattern pattern = Pattern.compile("^\"([^\"]*)\",|,\"([^\"]*)\",|,\"([^\"]*)\"$|(?<=,|^)([^,]*)(?=,|$)");

これにより、引用符とカンマの後にのみセル値が終了するか、コマンドと引用符の後にセル値が開始されます。

于 2012-11-29T23:26:16.533 に答える
0

FJがコメントしたように、入力データがあいまいです。しかし、入力例については、試すことができます

  • string.split("\",\"")を取得するメソッドString[]。この後、3 つの要素を持つ配列を取得します。
[
"A,B, 
2" size, 
text1,text2, text3"
]
  • 配列の最初の要素の最初の文字 (二重引用符) を削除します
  • 配列の最後の要素の最後の文字 (二重引用符) を削除します
于 2012-11-29T23:27:22.093 に答える