$re = '/From:\s*(?<name>[^<]*)(?:<(?<email>[^><]+)>)?(?:\nDate:\s*(?<date>.+))?(?:\nSubject:\s*(?<subject>.+))?/m';
$str = 'Regards
Ankit Balyan
---------- Forwarded message ---------
From: John Doe <john.doe@gmail.com>
Date: Thu, Aug 23, 2018 at 04:00 PM
Subject: my Email Subject
To: Ankit Balyan <sf.ankit@gmail.com>
Hi,
This is for testing purpose
';
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