$str = "1*(2+3)*(7+(3+4)+2)+5*(6+7)"; $str =~ /( \( (?: [^()]++ | (?1) )* \) | [^+()] )+ (\+ .*)/x; say "Match: $2";