>perl -wMstrict -le "my $s = 'foobar baz \"x\" %&*'; print qq{'$s'}; ;; $s =~ s{ < ([^>]+) > ((?: (?! }{$2}xmsg; print qq{'$s'}; ;; ;; $s = 'foo bar \"stuff\" *&!'; print qq{'$s'}; ;; my @tags = qw(b cd); my $tag = join '|', @tags; $tag = qr{ (?i) $tag }xms; use re 'eval'; $s =~ s{ < \s* ($tag) \s* > ((?: (?! ]*) (?(?{ lc($1) ne lc($^N) }) (*F)) \s* > } {$2}xmsg; print qq{'$s'}; " 'foobar baz "x" %&*' 'foobar baz "x" %&*' 'foo bar "stuff" *&!' 'foo bar "stuff" *&!'