I'm trying to pull all the components out of strings structured like: word followed by any number of ( dot word or square bracketed string ) This is an example: foo.bar[ab.cd].baz >From the above example, I want: array('foo', 'bar', 'ab.cd', 'baz'); A regular expression to match these strings, including parenthesis around the parts I want to pull out: preg_match('/(^\w+)(?:\.(\w+)|\[([^]]+)\])*/', $subject, $matches); However applied to the above example: $matches[1] = 'foo'; // First subexpression $matches[2] = 'baz'; // Last value of second subexpression $matches[3] = 'ab.cd'; // Last value of third subexpression I'm not sure how to get an array of all subexpression matches, in the order matches appear in the subject, instead of the order expressions appear in the pattern. I think I might be able to do something using the Perl (?{code}) construction, e.g. ...(?:\.(\w+)(?{$parts[] = \2})|\[([^]]+)(?{$parts[] = \3})\])*... but I haven't thought about it too much because PHP doesn't support this construction. Any ideas much appreciated. Thanks, Jack -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php