首頁 >Java >java教程 >如何分割逗號分隔的文本,同時忽略引號內的逗號?

如何分割逗號分隔的文本,同時忽略引號內的逗號?

Barbara Streisand
Barbara Streisand原創
2024-12-02 08:16:10855瀏覽

How to Split Comma-Separated Text While Ignoring Commas Within Quotes?

分割不包括引號的逗號分隔文字

處理帶有嵌入引號的逗號分隔文字時,有必要忽略引號內的逗號部分。在 Python 中使用預設的 string.split(",") 方法時會出現此問題。

考慮以下字串:

"123,test,444,\"don't split, this\",more test,1"

使用預設方法拆分此字串將產生以下結果結果:

["123", "test", "444", "\"don't split", " this\"", "more test", "1"]

如您所見,引用部分內的逗號不會被忽略。為了解決這個問題,需要使用正規表示式。

str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")

正規表示式說明:

  • **,:用逗號分割字串。
  • **(?=(d $)):先行斷言,確保僅當其後跟一個偶數個雙引號。
  • *(?:w"w"):捕捉多個引號的字串。
  • *。 $:捕捉剩餘的未加引號的文字。

此正規表示式確保只有引用部分以外的逗號才會被辨識為分隔符號。

或者,在Python 中使用(?x) 修飾符可以將正規表示式分解為多行以提高可讀性:

str.split("(?x)\n\
        ,          \n\
        (?=\n\
        (?:       \n\
            [^\"]*  \n\
            \"       \n\
            [^\"]*  \n\
            \"       \n\
        )*       \n\
        [^\"]*    \n\
        $        \n\
        )          \n")

此程式碼有效地將輸入字串拆分為一個列表,其中每個元素代表一個子字串,在任何引用的部分之外用逗號分隔。

以上是如何分割逗號分隔的文本,同時忽略引號內的逗號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn