$re = '/(^(THE\s)?((7)|ESTATE OF\s))?(.*?)(-?\s?DECEASED)?((P\.?R\.? OF THE)?(?(3)|\sESTATE OF))$/m';
$str = 'SMITH JOHN ESTATE OF
SMITH JOHN J ESTATE OF
SMITH JOHN JAMES ESTATE OF
SMITH, JOHN ESTATE OF
SMITH, JOHN J ESTATE OF
SMITH, JOHN JAMES ESTATE OF
ESTATE OF JOHN SMITH - DECEASED
ESTATE OF JOHN J SMITH - DECEASED
ESTATE OF JOHN JAMES SMITH - DECEASED
SMITH, JOHN DECEASED ESTATE OF
SMITH, JOHN J DECEASED ESTATE OF
SMITH, JOHN JAMES DECEASED ESTATE OF
THE ESTATE OF JOHN SMITH
THE ESTATE OF JOHN J. SMITH
THE ESTATE OF JOHN JAMES SMITH
THE ESTATE OF JOHN J. SMITH, JR.
THE ESTATE OF JOHN SMITH DECEASED
THE ESTATE OF JOHN J. SMITH DECEASED
THE ESTATE OF JOHN JAMES SMITH DECEASED
THE ESTATE OF JOHN J. SMITH, JR. DECEASED
SMITH, JOHN, P.R. OF THE ESTATE OF
SMITH, JOHN, J, P.R. OF THE ESTATE OF
SMTIH, JOHN, JAMES, P.R. OF THE ESTATE OF
SMITH, JOHN JAMES EST
EST OF JOHN SMITH
SMITH REAL ESTATE LLC
PRALINES';
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