REGEX expression to ignore commas in quotes

Discussion in 'Programming/Scripts' started by tlsuess, Jul 9, 2008.

  1. tlsuess

    tlsuess New Member

    Hey all,

    I am not a pro at REGEX but I'm trying to find a way to do a preg_split command and have it split a string by commas (,) but not while it's within single-quotes (').

    So it would match this:
    Code:
    1
    2
    4
    'test,like,this,see'
    5
    6
    'resume,coding'
    7
    from this:
    Code:
    1,2,4,'test,like,this,see',5,6,'resume,coding',7
    Does anyone know of a REGEX pattern I can use or something I can throw into a preg_match call?

    Thanks,
    Todd
     
  2. burschik

    burschik New Member

    It would be a good idea to tell us what language you are using, since not all regular expression implementations are created equal and since that knowledge might enable us to point out an alternative solution that might be possible in one language and not in another.

    I'm pretty sure, for example, that you can not do what you want to do with real regular expressions, although it might be possible with pcres. Since you seem to be using php, allow me to suggest the following alternative to your approach:

    HTML:
    $input = "1,2,4,'test,like,this,see',5,6,'resume,coding',7";
    preg_match_all("/'[^']+'|[^,]+/", $input, $output);
    foreach ($output[0] as $string) {
      echo $string . "\n";
    }
     
  3. tlsuess

    tlsuess New Member

    Wow it works! I was trying out different patterns but I think this one nailed it.

    Thanks for the help and yes I am using PHP. I forgot that REGEX differs between programming languages (only by minor details).
     

Share This Page