How do I split a string into an array by comma but ignore commas inside double quotes?

前端 未结 7 480
执笔经年
执笔经年 2020-12-22 07:50

I have a line:

$string = \'Paul,12,\"soccer,baseball,hockey\",white\';

I am try to split this into @array that has 4 values so

<         


        
7条回答
  •  生来不讨喜
    2020-12-22 08:30

    Use this regex: m/("[^"]+"|[^,]+)(?:,\s*)?/g;

    The above regular expression globally matches any word that starts with a comma or a quote and then matches the remaining word/words based on the starting character (comma or quote).

    Here is a sample code and the corresponding output.

    my $string = "Word1, Word2, \"Commas, inbetween\", Word3, \"Word4Quoted\", \"Again, commas, inbetween\"";
    my @arglist = $string =~ m/("[^"]+"|[^,]+)(?:,\s*)?/g;
    map { print $_ , "\n"} @arglist;
    

    Here is the output:

    Word1
    Word2
    "Commas, inbetween"
    Word3
    "Word4Quoted"
    "Again, commas, inbetween"
    

提交回复
热议问题