------art_5868_9174320.1134609686794
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

On 12/14/05, Jeff Wood <jeff.darklight / gmail.com> wrote:
>
> You should be able to tell who this message is meant for:
>
> PLEASE stop sending out code that uses any of the perl ${x} variables ...
>
> They are ugly and have no place in Ruby ... they are only provided to
> make the transition of Perl people easier ...
>
> Please teach people to use MatchData objects ...
>
> my_regex = /(\w\s*?.\s*?\w)\s*?.\s*?(\w)/
>
> matches = my_regex.match( "a , b,c" )
>
> element 0 of the matches object will contain the complete matched string.
>
> each element after that will map to one of the groups you defined ...
>
> so:
>
> matches[0] will be the whole string
> "a , b,c"
> matches[1] will be your first group
> "a , b"
> matches[2] will be your second group
> "c"
>
> ... seriously, we're not helping people make cleaner code when we show
> approval for the ugly/evil ${x} warts we've kept from Perl.
>
> ... show people the beauty and cleanliness of using an OOP solution ...
>
> I hope you agree.
>
> j.
>
> On 12/14/05, Ross Bamford <rosco / roscopeco.remove.co.uk> wrote:
> > On Wed, 14 Dec 2005 21:59:27 -0000, ako... <akonsu / gmail.com> wrote:
> >
> > > thank you. the question is general.
> > >
> > > if i wanted to parse a list of letters separated by spaces and commas:
> > >
> > > 'a , b,c' =~ /^(?:(\w)\s*,\s*)*(\w)$/
> > >
> > > i need to get ['a','b'] in group 1 and ['c'] in group 2. yes, i know i
> > > can split, then massage the result some more and get the final result.
> > > is there a way to get to groups' captures after a regex match? like in
> > > microsoft's .net?
> > >
> >
> > I don't really get what you mean. I don't understand the rules that got
> a
> > and b into one group and c into another. When you say it's a general
> > question, do you mean you just want access to the captures from some
> > regexp match?
> >
> > irb(main):009:0> "a , b,c" =~ /(\w\s*?,\s*?\w)\s*?,\s*?(\w)/
> > => 0
> > irb(main):010:0> $1
> > => "a , b"
> > irb(main):011:0> $2
> > => "c"
> > irb(main):012:0> $~[1]
> > => "a , b"
> > irb(main):013:0> $~[2]
> > => "c"
> > irb(main):014:0> md = /(\w\s*?,\s*?\w)\s*?,\s*?(\w)/.match("a, b,c")
> > => #<MatchData:0xb7a47860>
> > irb(main):015:0> md[1]
> > => "a, b"
> > irb(main):016:0> md.captures[1]
> > => "c"
> > irb(main):017:0> $~.inspect
> > => "#<MatchData:0xb7a47860>"
> >
> > (and others...)
> >
> > Hope that helps,
> > Ross
> >
> > --
> > Ross Bamford - rosco / roscopeco.remove.co.uk
> > "\e[1;31mL"
> >
> >
>
>
> --
> "Remember. Understand. Believe. Yield! -> http://ruby-lang.org"
>
> Jeff Wood
>
>
Regular expressions is the only area I still use Perl magic variables
because it's concise, readable, and works well in that context. It feels
like a regexp standard to me.

The other magic variables I've dispensed with.

Nick
--
Nicholas Van Weerdenburg

------art_5868_9174320.1134609686794--