$re = '/(?<=^CN=)(.*?)(?=\s?,\s?o)/mi';
$str = 'CN= John Q. Public, O=Agency, C=US
CN= John Q. Public, Jr.,O=Agency, C=US
CN=John Q. Public,O=Agency, C=US
CN=John Q. Pu,blic,O=Agency, C=US
CN=some name,ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
CN=some name, ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
CN=some name-Y- , ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
cn= some name-Y-,ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
cn= some na, o me-Y-,ou=Groups,ou=AAA,ou=DCCOMICS,o=boo berries,c=US
(?<=^CN=) - positive lookahead to find string starts with CN= and discard that match
(.*?) - non greedy seach for any single character
(?=,\\s?ou\\s=|,\\s?o\\s?=)
(?=,\\s?ou\\s=|,\\s?o\\s?=)';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php