$re = '/^(-----BEGIN (RSA )?(PUBLIC|PRIVATE) KEY-----\n)(.|\n)+(-----END (RSA )?(PUBLIC|PRIVATE) KEY-----)$/';
$str = '-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCG4Y5mYMYmwhyuayJseb1c7Gvh1fbhFLgUuqrjtx1fTL82p45l
Bb3nIz8Cn3DHLeylKTvVtF67bTf1/cWKtPPvskrWLKvR8WrN4FEyOI7S0kcZZOqX
cZCGHk4MMzoZS5BnaxZsO3WRNk9K3gM0zJtnD+2Gy/ZdVuzaK9kevVJX2QIDAQAB
AoGAPa7bI4CwPbtZyH4gMQF/kwZf09i43XhPMtOnIRp16UY8z+7SlOqKTTD2OOnX
do9PAL0ZqwKgrBAnnmyesW9NeqoOBBX84p9Ydiqc11oj7sjKawETC+eXB83eJB4T
sFWXzLdUq/T5uLEl0Nc+ekQPunazUWLx5Tgt/AqoJoLgmC0CQQDxBPoX+BEHfkLH
f/yThnZ3GJaDnh6gQfBcjyJhuxgHxa/obPCot0kVgm6jzuVNy7ykwc+2dw+4T0/j
QBPRzm4bAkEAj0O9fB+9W8Ytvsnussg9XHGxTtXsY2/iocrJSkRuhsPsczctO5Zw
JYcnBorFzxFqFGg7SdillrrRoEIuicXhGwJAGnIYWv7uJ2tUOn2xoiJT51d8VG7K
H318uTs/Y4fa6Cdp2M/zTB/oVgLczv6JrJKZXV6iwvunburM8jt6sT+8VwJAGLcM
917aYfy8Y4+emEUnIM2UUw9gqn7g0ByVwTQxBRrDrdS0/vSjADZiqyRBn8lXTZH1
uHWhi3FLPKRuNuJmRQJAL3WcSNzsLIJqX3lOkH5dFanLUxGpdS4w//0uz4T6TzoJ
ZvIFblnqe/RGHLWJfHra3q9jtizDH0lyBtgsZ5msmg==
-----END RSA PRIVATE KEY-----';
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