首頁 > Java > java教程 > 如何使用正規表示式拆分帶引號的逗號分隔文字?

如何使用正規表示式拆分帶引號的逗號分隔文字?

Barbara Streisand
發布: 2024-12-02 01:15:10
原創
522 人瀏覽過

How to Split Comma-Separated Text with Quotes Using Regular Expressions?

用引號分割逗號分隔的文字

在文字資料包含逗號分隔值的某些場景下,有必要分割資料基於逗號。然而,當資料包含引號內嵌入逗號的字串時,就會出現挑戰。

為了解決這個問題,一個通用的解決方案是使用專門針對雙引號之外的逗號的正規表達式:

str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
登入後複製

剖析這個正規表示式:

  • :,表示資料之間的目標逗號value.
  • (?=...$) 是一個前瞻斷言,表示逗號後面必須跟剩餘的表達式。
  • (?:[^"]*"[^"]*")* 匹配零個或多個重複的雙引號對,確保任何嵌入的逗號都被排除在外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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板