Perlメモにそのものずばりがあったよ。
http://www.din.or.jp/%7Eohzaki/regex.htm#ReplaceOutside
O崎さんすら3度も書き換えてる!むずいんだ。
~$ perl -e '$var="xx<tag val1=\"xxx\">xxx<\/tag>xx<tag val2=\"xxx\">xxx<\/tag>xx"; $var =~ s/(?:^|(?<=>))(.*?)(?:$|(?=<))/yyy/g; print $var, "\n";'
yyy<tag val1="xxx">yyy</tag>yyy<tag val2="xxx">yyy</tag>yyy