用引號分割逗號分隔的文字
在文字資料包含逗號分隔值的某些場景下,有必要分割資料基於逗號。然而,當資料包含引號內嵌入逗號的字串時,就會出現挑戰。
為了解決這個問題,一個通用的解決方案是使用專門針對雙引號之外的逗號的正規表達式:
str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
剖析這個正規表示式:
或者,可以使用(?x )修飾符以更易讀的格式編寫相同的正規表示式,這允許多行表達式增強可讀性:
String[] arr = str.split("(?x) " + ", " + // Split on comma "(?= " + // Followed by " (?: " + // Start a non-capture group " [^\"]* " + // 0 or more non-quote characters " \" " + // 1 quote " [^\"]* " + // 0 or more non-quote characters " \" " + // 1 quote " )* " + // 0 or more repetition of non-capture group (multiple of 2 quotes will be even) " [^\"]* " + // Finally 0 or more non-quotes " $ " + // Till the end (This is necessary, else every comma will satisfy the condition) ") " // End look-ahead );
該解決方案有效解決了逗號分隔文字的分割問題,同時保留了雙引號內包含逗號的字串的完整性。
以上是如何使用正規表示式拆分帶引號的逗號分隔文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!