Getting the results of a simple regex

Hello,

I'm playing for my very first time with Regex ...

I want to split some numbers, and get their results:

Given this string:

18,04 2,89 20,93 2,71 18,22

I want to get every number before a comma, and two digits later, and all
the groups.

I think it should work this way but I can only get the first result ...

/(\d+,\d{2})/ =~ "18,04 2,89 20,93 2,71 18,22"
=> 0

$1

=> "18,04"

$2

=> nil

$3

=> nil

$4

=> nil

$5

=> nil

Playing with the http://www.rubular.com/ I can get the result that I
want ...

I also tried the Regexp.last_match but I'm getting the same, only the
first value ...

what I'm doing wrong ?

thanks!

r.

···

--
Posted via http://www.ruby-forum.com/\.

You do not use String#scan. :slight_smile:

Btw, you do not need the grouping as you want the complete match anyway.

Kind regards

  robert

···

On 06.04.2009 19:12, Raimon Fs wrote:

Hello,

I'm playing for my very first time with Regex ...

I want to split some numbers, and get their results:

Given this string:

18,04 2,89 20,93 2,71 18,22

I want to get every number before a comma, and two digits later, and all
the groups.

I think it should work this way but I can only get the first result ...

/(\d+,\d{2})/ =~ "18,04 2,89 20,93 2,71 18,22"
=> 0

$1

=> "18,04"

$2

=> nil

$3

=> nil

$4

=> nil

$5

=> nil

Playing with the http://www.rubular.com/ I can get the result that I
want ...

I also tried the Regexp.last_match but I'm getting the same, only the
first value ...

what I'm doing wrong ?

Robert Klemme wrote:

$2

want ...

I also tried the Regexp.last_match but I'm getting the same, only the
first value ...

what I'm doing wrong ?

You do not use String#scan. :slight_smile:

=> var="18,04 2,89 20,93 2,71 18,22"

a=var.scan(/\d+,\d{2}/)

=> ["18,04", "2,89", "20,93", "2,71", "18,22"]

a[0]

=> "18,04"

a[1]

=> "2,89"

a[2]

=> "20,93"

a[3]

=> "2,71"

a[4]

=> "18,22"

:slight_smile:

thanks ....

Btw, you do not need the grouping as you want the complete match anyway.

I was grouping with () because I was using:

      line =~
%r{(\d+,\d{2})(\s)(\d+,\d{2})(\s)(\d+,\d{2})(\s)(\d+,\d{2})(\s)(\d+,\d{2})}

and then $1, $2, $3, $4, ...

thanks for your help!

regards,

r.

···

On 06.04.2009 19:12, Raimon Fs wrote:

--
Posted via http://www.ruby-forum.com/\.