$re = '`<a\s+(?![^>]*rel\s*=\s*([\'"])\s*nofollow\s*\1)[^>]*href\s*=\s*(["\'])http://www.mysite.com[][\w-.~:/?#@!%$&\'()*+,;=]*\2[^>]*>`';
$str = '<a ... href="http://www.mysite.com/xyz...." ... >
<a ... href="http://www.mysite.com/xyz...." rel=\'nofollow\' ... >
<a ... href="http://www.NOTmysite.com" ... >
<a ... href="http://www.mysite.com" rel=\'foobar\'... >
<a class="use_same_protocol" href="//www.mysite.com" >
<!-- This used to great <a ... href="http://www.mysite.com/xyz...." ... > -->';
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