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

引用符を保持したままカンマ区切りのテキストを分割するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-02 02:21:10
オリジナル
529 人が閲覧しました

How Can I Split Comma-Separated Text While Preserving Quotes?

引用符を保持しながらカンマを使用してテキストを分割する

カンマで区切られたテキストを解析するときは、引用符で囲まれた部分文字列内にカンマが出現する状況に対処することが重要です。この例のように:

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

分割デフォルトの String.split(",") メソッドを使用して、この文字列をコンマで区切ると、次の結果が得られます。

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

ご覧のとおり、「分割しないでください、この」引用符内のコンマは、誤って解釈されます。 separator.

この問題に対処するには、より洗練されたアプローチが必要です。この場合、正規表現を使用して、偶数の二重引用符が続かないカンマで文字列を分割できます。これにより、引用符で囲まれた部分文字列内のカンマが区切り文字と間違われなくなります。

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

この正規表現では、次のロジックが使用されます。

  • (?=): 先読みという主張

    • (?:[^"]*"[^"]*")*: 二重引用符で囲まれた任意の数の部分文字列と一致します。
    • [^"]* : 任意の数の引用符以外の文字と一致します。
    • $: 文字列の終わりassert.

言い換えると、この先読みは、現在のコンマの後に偶数の二重引用符が続くかどうか、および文字列の終わりが続くかどうかをチェックします。 、それは、カンマが引用符で囲まれた部分文字列内になく、それ以外の場合は区切り文字と見なされることを示します。無視されます。

正規表現の簡略化されたバージョンを使用することもできます。

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

このバージョンでは、正規表現の可読性を高めるために修飾子 (?x) が使用されます。空白文字は無視されます。

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

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