Ajey Kulkarni wrote:
>
> happy new year to all,..
> i've a qn.,:)
> i want to 'insert' an escape character for every '[' & ']'
> i will find in a variable..
> Suppose $temp has a word which might contain [ and/or ].
> Eg: if $temp has hello]
> the modified temp should have hello\]
>
> if $value  has [hello] i want the result to be \[hello\].
>
> Is there a quick one line regex to do this?
> i'm able to match the presence of [ & ]
> if( (/\[/)|(/\]/) ){
>          my $value = $_;
>          $value =~ s/\[/\\\[/;
>          $value =~ s/\]/\\\]/;
>          print $value;
>
>         }
> Kinda doing the stuff,but i just checkign out a 1 liner reg-ex.

Won't a two-liner do? You've already written it if so, except
that square brackets in the replacement string don't need
escaping; a one-liner is possible but much less efficient. Also
you don't need the 'if'. Does the code below help? I've also
changed the s/// delimiters to brackets to avoid the mess that
the slashes and backslashes make.

  my $value = '[hello]';

  for ($value) {
    s(\[)(\\[)g;
    s(\])(\\])g;
  }

  print $value, "\n";

**OUTPUT

  \[hello\]

Alternatively, if it's OK to escape all non-alphanumeric characters
then 'quotemeta' is what you want.

  my $value = '[hello]';
  $value = quotemeta $value;
  print $value, "\n";

**OUTPUT

  \[hello\]


Cheers,

Rob



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to