<?php
    $matches = null;
    $matchCount = preg_match_all(
                    '/\G\s*+((\((?:\s*+(?2)\s*+(?(?!\)),)|\s*+[^()\',\s]++\s*+(?(?!\)),)|\s*+\'[^\'\r\n]*+\'\s*+(?(?!\)),))++\))|[^()\',\s]++|\'[^\'\r\n]*+\')\s*+(?:,|$)/',
                    'AAA  , BBB  , (CCC   ,  DDD)  , \'EEE\', \'FFF,GGG\', (\'HHH\',\'III\'), (  ( \'JJJ\',  \'KKK\')  , LLL  , (   MMM  ,  NNN) ) , OOO , (\'ABC\', \'SDF,SDF()SDF\',  (  SDF,  SDF  )  ,SDF),(sdf,sdf,sdf,sd,(f,f,f,(fsd),\'sdf\')),sdf,\'sdfs\',(Sdf,\'sdfsdf\',(ssdf,\'sdf,sdfsdf)\'))  ',
                    $matches, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE);
    print_r($matches)
?>