$re = '/^([^:]+):|(?!^)(?<=\G)(?:\s)([^,]+)(?:,|$)/m';
$str = 'Prompt: professional digital [airbrush:gouache:0.6] art of 20 year old (mythical:1.1) demon with long black hair, wearing ragged jacket and jeans, dynamic lighting, outstanding, masterpiece, cinematic, best, perfect, slightly blurry fantasy country background, rule of thirds, composed
Negative prompt: (child), (male), (mangled hands), (badly drawn hands),( badly drawn fingers), back turned
Template: professional digital [airbrush:gouache:0.6] art of {20¦30} year old (mythical:1.1) demon with {medium|long} {brown|black} hair, wearing ragged jacket and jeans, dynamic lighting, outstanding, masterpiece, cinematic, best, perfect, slightly blurry fantasy {office¦country¦castle} background, rule of thirds, composed
Negative Template: (child), (male), (mangled hands), (badly drawn hands),( badly drawn fingers), back turned';
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