Если вам нужно, вы можете попытаться использовать регулярное выражение для извлечения текста между двумя тегами, а затем обработать его, а затем снова вставить его, но эта задача, вероятно, сложнее, чем один регулярное выражение из-за ваших ограничений.
Вот что в Perl работает (но не использует регулярные выражения):
my (@a, $in_tag);
foreach(split //, $string) { # assuming $string holds our string
$in_tag = 1 if $_ eq "<";
$in_tag = 0 if $_ eq ">";
if($_ eq "/" and not $in_tag) {
push @a, " ", "/", " ";
}
else {
push @a, $_;
}
}
$string = join "", @a;
Это, однако, не регулярное выражение, а очень простой синтаксический анализатор.