[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

getting the results of a simple regex

Raimon Fs

4/6/2009 5:13:00 PM

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.ru... 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-....

2 Answers

Robert Klemme

4/6/2009 6:27:00 PM

0

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.ru... 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 ?

You do not use String#scan. :-)

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

Kind regards

robert

Raimon Fs

4/6/2009 6:39:00 PM

0

Robert Klemme 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. :-)


=> 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"

:-)

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.
--
Posted via http://www.ruby-....