Getting the results of a simple regex


#1

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.


#2

On 06.04.2009 19:12, Raimon Fs 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:

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

Kind regards

robert


#3

Robert K. wrote:

On 06.04.2009 19:12, Raimon Fs 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.