PDA

View Full Version : REGEX expression to ignore commas in quotes


tlsuess
10th July 2008, 00:22
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:
1
2
4
'test,like,this,see'
5
6
'resume,coding'
7

from this:
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

burschik
11th July 2008, 10:22
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:

$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";
}

tlsuess
11th July 2008, 10:35
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).