If that is actually your string, this will work:
preg_match('#Hello! (<!--\\[ABC;BCD\\]-->) and ALSO (<!--\\[TEST;PARA\\]-->)#', $string, $arr);
Although the array will look like this:
$arr[0] = "Hello! <!--[ABC;BCD]--> and ALSO <!--[TEST;PARA]-->"
$arr[1] = "<!--[ABC;BCD]-->"
$arr[2] = "<!--[TEST;PARA]-->"
I guess if it was a big deal, you could do this (there is probably an easier way):
preg_match('#Hello! (<!--\\[ABC;BCD\\]-->) and ALSO (<!--\\[TEST;PARA\\]-->)#', $string, $matches);
$arr[] = $matches[1];
$arr[] = $matches[2];
Note: For some reason vBulletin is including an extra space after the '-->' and before the ')' in my pattern. You can take that out.... It should look like '-->)'