$re = qr{ \( (?{ local $N = 1 }) (?: (?(?{ !$N })(?!)) (?: \( (?{ local $N = $N + 1 }) | \) (?{ local $N = $N - 1 }) | [^()]+ ) )+ (?(?{ $N })(?!)) # fixed, thanks to Hofmator }x; $text =~ s/$re//g;