$re = '/^
(CONF|ESD|TRACKING)
(?:
\h*[:;\'\h]\h*
(.*?)
(?:
\h*L\h*[:;\'\h]\h*
(
(?:\d+(?:\(\d+\))?)
(?:\h*,\h*\d+(?:\(\d+\))?)*
)
(?:
\h*(\*[.a-z]+)
)?
)?
)?
\h*
$/imx';
$str = 'esd hedf L:1,2,3 *sm
CONF: FEDEX 12345 L: 12(2),2(9),32 *SM
ESD: 12/12/92 L:
tRacking\' my data L: 1,2,3(4)
tracking
ConF\'\'\' something \'\' L: 6
esd test 24(7)';
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