ホームページ > Java > &#&チュートリアル > 引用符内のカンマを無視してカンマ区切りのテキストを分割するにはどうすればよいですか?

引用符内のカンマを無視してカンマ区切りのテキストを分割するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-02 08:16:10
オリジナル
854 人が閲覧しました

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

引用符を除くカンマ区切りテキストの分割

引用符が埋め込まれたカンマ区切りテキストを処理する場合、引用符内のカンマを無視する必要があります。セクション。この問題は、Python でデフォルトの string.split(",") メソッドを使用するときに発生します。

次の文字列について考えてみましょう:

"123,test,444,\"don't split, this\",more test,1"
ログイン後にコピー

デフォルトのメソッドを使用してこの文字列を分割すると、次のようになります。 result:

["123", "test", "444", "\"don't split", " this\"", "more test", "1"]
ログイン後にコピー

ご覧のとおり、引用符で囲まれたセクション内のカンマは無視されません。これに対処するには、正規表現が必要です。

str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")
ログイン後にコピー

正規表現の説明:

  • **,: 文字列をカンマで分割します。
  • **(?=(d $)): 次の場合にのみ分割が発生することを保証する先読みアサーション
  • *(?:w"w"): 複数の引用符で囲まれた文字列をキャプチャします。
  • *.$: 引用符で囲まれていない残りの部分をキャプチャしますtext.

この正規表現により、引用符で囲まれたセクションの外側にあるカンマのみが区切り文字として認識されます。

あるいは、Python で (?x) 修飾子を使用すると、読みやすさを向上させるために正規表現を複数行に分割します:

str.split("(?x)\n\
        ,          \n\
        (?=\n\
        (?:       \n\
            [^\"]*  \n\
            \"       \n\
            [^\"]*  \n\
            \"       \n\
        )*       \n\
        [^\"]*    \n\
        $        \n\
        )          \n")
ログイン後にコピー

このコードは、入力文字列を効果的に各要素が表すリストに分割します。引用符で囲まれたセクションの外側にあるカンマで区切られた部分文字列。

以上が引用符内のカンマを無視してカンマ区切りのテキストを分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート