[英]String split on comma exclude comma in double quote and split adjacent commas
我想根據逗號分割字符串,但不包括雙引號,如果有相鄰逗號,也應將其計為單獨的標記
我可以使用正則表達式[^,\\"']+|\\"([^\\"]*)\\"
對逗號進行字符串分割(不包括雙引號[^,\\"']+|\\"([^\\"]*)\\"
但是如果有相鄰的逗號,則無法正確標記化標記。 字符串示例
one,two,three,four,"five1,five2", six ,seven,"eight1,eight2","nine",,eleven
輸出應該是
one
two
three
four
five1,five2
six
seven
eight1,eight2
nine
eleven
請幫忙
如果所有引號都匹配,則每個要分割的逗號后面都將加上偶數個"
。因此,您可以使用前瞻並將其填充到myString.split(pattern, -1)
:
,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)
僅當所討論的逗號與字符串的末尾之間有偶數個"
,這才匹配。
請注意, -1
的split
參數很重要,否則尾隨的空字符串將被忽略。
旁注:我不知道Java regex引擎的優化程度如何,因此,如果失敗,這種前瞻可能效率很低,因為它不必要地回溯。 如果遇到性能問題,請嘗試使量詞具有所有格:
,(?=(?:(?:[^\"]*+\"){2})*+[^\"]*+$)
這將阻止引擎回溯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.