>perl -wMstrict -le "my @txt = ( '{name_b param_v=\"wh\"}', '{name_a param_x=\"abc\" param_a=\"fsd\" param_y=\"def\"}', '{name_z param_sd=\"zka\" param_s=\"df\"}', '{name_a param_y=\"wtf\" param_z=\"kro\" param_c=\"ptz\" param_ch=\"www\"}', '{name_a param_sd=\"zka\" param_y=\"wtf\"}', ); ;; my $not_p_xy = qr{ (?! param_ [xy] \b) }xms; my $not_sp_param = qr{ (?! \s+ $not_p_xy param_ \w+) . }xms; ;; for my $s (@txt) { print qq{'$s'}; $s =~ s( (?: \G (?## sub xform { my ($string, ) = @_; my $xy = qr{ [xy] }xmso; my $val = qr{ = ' [^']* ' }xmso; my $param_ = qr{ \s+ param_ }xmso; my $param_xy = qr{ $param_ $xy $val }xmso; my $param_any = qr{ $param_ \w+ $val }xmso; $string =~ s{ (?: \G (?