$re = '/(?:(un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix|quinze|vingt|trente)\s+(mois|années|année|ans|an)\s+(?:d\'(emprisonnement)|de (réclusion criminelle)))|(?:de\s+la\s+(réclusion)\s+criminelle\s+à\s+(perpétuité))/';
$str = 'Le vol est puni de la réclusion criminelle à perpétuité et de 150 000 euros d\'amende lorsqu\'il est précédé, accompagné ou suivi soit de violences ayant entraîné la mort, soit de tortures ou d\'actes de barbarie. ';
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