簡體   English   中英

在Java中使用RegEx解析CSV-單元格內的轉義雙引號

[英]Parsing CSV with a RegEx in java - escape double quote within cell

我正在尋找一個Java regex,它將在Excel單元格中轉義雙引號。

我已經遵循了這個示例,但是需要對正則表達式進行另一處更改,以使其能夠在一個單元格中轉義雙引號。

在Java中使用RegEx解析CSV輸入

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

示例數據:

“ A,B” “ 2”大小“ ” text1,text2,text3“

上面的正則表達式在2"處失敗。

我希望輸出如下。無論外部雙引號是否存在,都沒關系。

“ A,B”
“ 2”尺寸”
“ text1,text2,text3”

我同意,使用正則表達式解析CVS並不是真正的最佳方法,但更好的模式是:

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

這將僅在引號和逗號之后終止單元格值,或在命令和引號之后啟動它。

就像FJ評論的那樣,輸入數據不明確。 但是對於示例輸入,您可以嘗試

  • string.split("\\",\\"")方法獲取String[] 之后,您將獲得一個包含3個元素的數組:
 [ "A,B, 2" size, text1,text2, text3" ] 
  • 刪除數組第一個元素的第一個字符(雙引號)
  • 刪除數組最后一個元素的最后一個字符(雙引號)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM