The Regular Expression
/Dear (\w+)! Your Reports(.*?)(?=has arrived)/
PHP usage
<?php
$subject = 'Dear Patient! Your Reports(report number) has arrived.';
if (preg_match('/Dear (\w+)! Your Reports(.*?)(?=has arrived)/', $subject, $regs)) {
    var_dump($regs);
} 
Result
array(3) {
  [0]=>
  string(42) "Dear Patient! Your Reports(report number) "
  [1]=>
  string(7) "Patient"
  [2]=>
  string(16) "(report number) "
}
Explanation
"
Dear\             # Match the characters “Dear ” literally
(                 # Match the regular expression below and capture its match into backreference number 1
   \w                # Match a single character that is a “word character” (letters, digits, etc.)
      +                 # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
)
!\ Your\ Reports  # Match the characters “! Your Reports” literally
(                 # Match the regular expression below and capture its match into backreference number 2
   .                 # Match any single character that is not a line break character
      *?                # Between zero and unlimited times, as few times as possible, expanding as needed (lazy)
)
(?=               # Assert that the regex below can be matched, starting at this position (positive lookahead)
   has\ arrived      # Match the characters “has arrived” literally
)
"
     
    
patient nameandreport numberlook like.