in reply to Re: How do I replace certain character if condition exists
in thread How do I replace certain character if condition exists

This works if you are sure that you won't have any nested parentheses. If you do then it doesn't work at all, for example:

a(b(c))           becomes a b(c))
a (b (c) d (e) f) becomes a  b (c) d (e) f)
  • Comment on Re: Re: How do I replace certain character if condition exists

Replies are listed 'Best First'.
Re: Re: Re: How do I replace certain character if condition exists
by kilinrax (Deacon) on Apr 17, 2003 at 16:58 UTC
    Well, you can do that with a regex, but it's a good degree more complicated.....
    abowley@krait:~$ (echo 'Madrid(Spain(Europe)' && echo 'Madrid(Spain(Eu +rope))' && echo 'Madrid(Spain Europe))' && echo 'a(b(c))' && echo 'a +(b (c) d (e) f)') | perl -mstrict -wpe 'BEGIN { $brackets = qr#\([^() +]*(?:(??{$brackets})[^()]*)*\)# }; s#([^)]+?)($brackets)([^(]+)# ( my + $s = $1 ) =~ tr/(/ /; ( my $e = $3 ) =~ tr/)/ /; $s . $2 . $e #ge;' Madrid Spain(Europe) Madrid(Spain(Europe)) Madrid(Spain Europe) a(b(c)) a (b (c) d (e) f)