$re = '/\[.+\] (?!tired\.0003).+\n(.+)\n{2}(?:\[.+\] tired\.0003\n(.+)\n{2})/m';
$str = '[18-Feb-21 03:31 PM] tired.#0003
from the thumbnail
[18-Feb-21 03:31 PM] tired.#0003
this is either about to go good or bad
[18-Feb-21 03:32 PM] anonymous#0000
It’s neither
[18-Feb-21 03:32 PM] tired.#0003
sad
[18-Feb-21 03:32 PM] anonymous#0000
I wonder if I can cause it to be removed';
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