$re = '/# Find the company at the beginning of the line, always:
^ COMPANY:(?P<company>[^\s|]+(?:[ ][^\s|]+)*)
# After COMPANY, any of PERSON or PRODUCT may be matched:
|\G [^\S\r\n]*[|][^\S\r\n]*
PERSON:(?P<person>[^\s|]+(?:[ ][^\s|]+)*)
|\G [^\S\r\n]*[|][^\S\r\n]*
PRODUCT:(?P<product>[^\s|]+(?:[ ][^\s|]+)*)/mx';
$str = 'COMPANY:Pizza
COMPANY:Pizza
COMPANY:Pizza | PERSON:Sid Sanders | PERSON:Louise Lane | PRODUCT:Bananas
COMPANY:Pizza |PERSON:Sid Sanders | PERSON:Louise Lane| PRODUCT:Bananas
COMPANY:Pizza| PERSON:Sid Sanders | PERSON:Louise Lane|PRODUCT:Bananas
COMPANY:Pizza|PERSON:Sid Sanders | PERSON:Louise Lane |PRODUCT:Bananas
COMPANY:Food Heaven
COMPANY:Food 123 Heaven
COMPANY:Food Heaven | PRODUCT:Bananas | PERSON:Sid Sanders | PERSON:Louise Lane
COMPANY:Food Heaven123| PRODUCT:Bananas |PERSON:Sid Sanders | PERSON:Louise Lane
COMPANY:Food Heaven| PERSON:Sid Sanders | PERSON:Louise Lane | PRODUCT:Bananas
COMPANY:Food Heaven|PERSON:Sid Sanders| PRODUCT:Bananas | PERSON:Louise Lane
COMPANY:Something Somewhere Anywhere - There
COMPANY:Something 1 Soöômewhere Anywhere There
COMPANY:Something 2 Somewhere - Anywhere There | PERSON:Sid Sanders | PRODUCT:Bananas| PERSON:Louise Lane
COMPANY:Something - Somewhere Anywhere There |PERSON:Sid Sanders| PRODUCT:Bananas | PERSON:Louise Lane
COMPANY:- Something 3 Somewhere Anywhere There| PERSON:Sid Sanders |PRODUCT:Bananas | PERSON:Louise Lane
COMPANY:Something Somewhere 4 Anywhere There|PERSON:Sid Sanders | PRODUCT:Bananas | PERSON:Louise Lane
# Should not match:
|PERSON:Fred Rogers
| PRODUCT:Mr. Roger\'s Neighborhood
# Should start matching again:
COMPANY:Fred Rogers Productions |PERSON:Fred Rogers |PRODUCT:Mr. Roger\'s Neighborhood
';
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