Regex inverse

$a = 'asdasdasd as asdasdas <img src="http://www.domain1.com/1.gif"> sdfsdf <img src="http://www.domain2.com/1.gif">  <img src="http://www.domain3.com/1.gif">';

$pattern = '(<img[^>]+domain1.com[^>]+>)';
$a = preg_replace($pattern, '', $a);


How can I keep only img tags from domain1.com?

Any idea for an inverse like
$pattern = ‘!(<img[^>]+domain1.com[^>]+>)’;


<?php
function domain_filter($match, $domain = 'domain1.com'){
  if(stristr($match[0], $domain)){
    return $match[0];
  }
}

$filtered = preg_replace_callback(
  '~<img[^>]+>~',
  'domain_filter',
  'asdasdasd as asdasdas <img src="http://www.domain1.com/1.gif"> sdfsdf <img src="http://www.domain2.com/1.gif">  <img src="http://www.domain3.com/1.gif">'
);

echo $filtered;
/* 
  asdasdasd as asdasdas <img src="http://www.domain1.com/1.gif"> sdfsdf   
*/