[英]java regex to remove unwanted double quotes in csv
我有一個csv文件,其中包含以下行。 如您所見,數字沒有用雙引號引起來。
String theLine = "Corp:Industrial","5Nearest",51.93000000,"10:21:29","","","","10:21:29","7/5/2016","PER PHONE CALL WITH SAP, CORRECTING "C","359/317 97 SMRD 96.961 MADV",""
我嘗試閱讀上面的行並使用regEX進行拆分
String[] tokens = theLine.split(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
這不會像我想要的那樣在每個逗號處分開。 “具有SAP的每通電話,更正了“ C”,將其弄亂了,因為它具有附加的,(逗號)和“(雙引號)。 有人可以幫我寫一個正則表達式嗎,它會轉義一個額外的雙引號和一個用兩個雙引號引起的逗號。
我基本上想要:
"Corp:Industrial","5Nearest",51.93000000,"10:21:29","","","","10:21:29","7/5/2016","**PER PHONE CALL WITH SAP CORRECTING C**","359/317 97 SMRD 96.961 MADV",""
在某些工作中,解析器比正則表達式要好得多,這類事情通常就是其中之一。 我並不是說您無法使其適合您,但是...您還可以使用開源的CSV解析器來投入使用。
話雖如此,您的CSV在我看來還是很可疑。
"PER PHONE CALL WITH SAP, CORRECTING "C",
該值中包含三個引號-是要表示內部僅包含一個引號的字符串嗎? 還是C應該用引號和String包圍?
通常,如果要在雙引號中包含雙引號,則需要特殊語法。 對於CSV,最常見的選擇是將其加倍,或使用反斜杠等字符將其轉義:
"PER PHONE CALL WITH SAP, CORRECTING ""C""",
要么:
"PER PHONE CALL WITH SAP, CORRECTING \"C\"",
這些都不會直接改變您使用正則表達式的問題,但是一旦您擁有格式正確的CSV,成功解析它的幾率就會增加。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.