$re = '/(^(?!.*\bno\b.*\b(text|sample text)\b)(?!.*\b(text|sample text)\b .*not).+$)/m';
$str = 'should not match: first sentence with no and sample text
should not match: second with a text but also a not
should not match: third has a no, a text and a not
should match: fourth alone is what is neeeded with just text
should match: keep putting line here no
';
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