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

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

Barbara Streisand
リリース: 2024-12-02 01:15:10
オリジナル
513 人が閲覧しました

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

カンマ区切りのテキストを引用符で分割する

テキスト データにカンマ区切りの値が含まれる特定のシナリオでは、データを分割する必要があります。カンマに基づいて。ただし、データに引用符内にカンマが埋め込まれた文字列が含まれている場合に問題が発生します。

これに対処する汎用性の高い解決策は、二重引用符の外側にあるカンマを特にターゲットとする正規表現を採用することです。

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

この正規表現を分析すると、

  • :, は、データ値間のターゲット カンマ。
  • (?=...$) は先読みアサーションで、カンマの後に残りの式が続く必要があることを示します。
  • (?:[^"]*"[^"]*")* は二重引用符のペアの 0 回以上の繰り返しに一致し、次のことを保証します。埋め込まれたカンマは分割から除外されます。
  • [^"]* は、最後の二重引用符または文字列の先頭の後の引用符以外の文字に対応します。

別の方法として、(?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 中国語 Web サイトの他の関連記事を参照してください。

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