$_='$0$1$2$3$4$5$6$7$8$9$10$11$12 '; ($re=$_)=~s/(()|(<\/paragraph>)|[^<]+|.)/${[')','']}[!$3]\Q$1\E${['(','']}[!$2]/gs; $re=join"|",map{quotemeta}(eval{/$re/}); s{($re)}{local $_=$1;s###g;$_}eg; print;