[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

special characters within [] in a regexp

Martin DeMello

8/15/2006 7:30:00 AM

What characters have to be escaped within a [] in a regular
expression? I was a bit taken aback by the following:

irb(main):001:0> a = '!#$%^&*((*)*_GHF$%#$*^%&;2~__)+|{}|{\\'
=> "!\#$%^&*((*)*_GHF$%\#$*^%&;2~__)+|{}|{\\"
irb(main):002:0> a.gsub(/[!@#$%^&*+={}|\\]/, '_')
SyntaxError: compile error
(irb):2: parse error, unexpected $undefined.
a.gsub(/[!@#$%^&*+={}|\\]/, '_')
^
(irb):2: parse error, unexpected $undefined.
a.gsub(/[!@#$%^&*+={}|\\]/, '_')
^
(irb):2: parse error, unexpected ')', expecting $
from (irb):2
irb(main):003:0> a.gsub(/[!@#$\%^&*+={}|\\]/, '_')
=> "_\#$____((_)__GHF$_\#$____;2~__)_______"
irb(main):004:0> a.gsub(/[!@#\$\%^&*+={}|\\]/, '_')
=> "_______((_)__GHF________;2~__)_______"

martin

2 Answers

Carlos

8/15/2006 11:58:00 AM

0

Martin DeMello wrote:
> What characters have to be escaped within a [] in a regular
> expression? I was a bit taken aback by the following:
>
> irb(main):001:0> a = '!#$%^&*((*)*_GHF$%#$*^%&;2~__)+|{}|{\\'
> => "!\#$%^&*((*)*_GHF$%\#$*^%&;2~__)+|{}|{\\"
> irb(main):002:0> a.gsub(/[!@#$%^&*+={}|\\]/, '_')
> SyntaxError: compile error
> (irb):2: parse error, unexpected $undefined.
> a.gsub(/[!@#$%^&*+={}|\\]/, '_')
> ^
> (irb):2: parse error, unexpected $undefined.

Hi. You don't need braces to interpolate global variables. "#$%" tries
to interpolate special variable $%.

--


Martin DeMello

8/15/2006 3:24:00 PM

0

On 8/15/06, Carlos <angus@quovadis.com.ar> wrote:
> Martin DeMello wrote:
> > What characters have to be escaped within a [] in a regular
> > expression? I was a bit taken aback by the following:
> >
> > irb(main):001:0> a = '!#$%^&*((*)*_GHF$%#$*^%&;2~__)+|{}|{\\'
> > => "!\#$%^&*((*)*_GHF$%\#$*^%&;2~__)+|{}|{\\"
> > irb(main):002:0> a.gsub(/[!@#$%^&*+={}|\\]/, '_')
> > SyntaxError: compile error
> > (irb):2: parse error, unexpected $undefined.
> > a.gsub(/[!@#$%^&*+={}|\\]/, '_')
> > ^
> > (irb):2: parse error, unexpected $undefined.
>
> Hi. You don't need braces to interpolate global variables. "#$%" tries
> to interpolate special variable $%.

Oh! Okay, I get it now :) Thanks.

martin
> --
>
>
>