[xyz]level 1.1[/xyz] [xyz]level 1.2[/xyz] ####
level 1.1
level 1.2
##
## [xyz]level 1.1 [xyz]level 2.1[/xyz] rest of 1.1 [/xyz] ####
level 1.1
level 2.1
rest of 1.1
##
## [xyz] error [xyz] level 1.1 [xyz] level 2.1 [/xyz] [/xyz] [xyz] level 1.2 [/xyz] #### [xyz] error
level 1.1
level 2.1
level 1.2
##
## while ($string =~ s/ \[xyz\] (text not containing [xyz] or [\/xyz]) \[\/xyz\] / "
$1
" /gsiex; ##
## while ($string =~ s/ (\[\Q$tag\E\]) (.+?) (\[\/\Q$tag\E\]) / my ($pre, $text, $post) = ($1,$2,$3); if ($text =~ m|\[\Q$tag\E\]|) { $pre.$text.$post; } else { "
$text<\/td><\/tr><\/table>" } /gsiex) { 1; # do nothing }