Jean_G
(Jean G.)
1
Hello,
irb(main):001:0> x="123 456 789"
=> "123 456 789"
irb(main):003:0> if /\d{3}/ =~ x
irb(main):004:1> puts $&
irb(main):005:1> end
123
For the statement above, I want to capture all "123" and "456" and
"789", not the only "123".
How to do it (must use regex)? Thanks.
The regex itself seems okay...
irb(main):015:0> x.scan(/\d{3}/)
=> ["123", "456", "789"]
···
On Mon, Jan 4, 2010 at 8:53 AM, Ruby Newbee <rubynewbee@gmail.com> wrote:
Hello,
irb(main):001:0> x="123 456 789"
=> "123 456 789"
irb(main):003:0> if /\d{3}/ =~ x
irb(main):004:1> puts $&
irb(main):005:1> end
123
For the statement above, I want to capture all "123" and "456" and
"789", not the only "123".
How to do it (must use regex)? Thanks.
irb(main):001:0> x="123 456 789"
=> "123 456 789"
irb(main):003:0> if /\d{3}/ =~ x
irb(main):004:1> puts $&
irb(main):005:1> end
123
For the statement above, I want to capture all "123" and "456" and
"789", not the only "123".
How to do it (must use regex)? Thanks.
Try to use the block version of gsub:
x.gsub(/\d{3}/) {|m| puts m}
123
456
789
Cheers,
···
--
JJ Fleck
PCSI1 Lycée Kléber
Use the scan method:
http://ruby-doc.org/core/classes/Kernel.html#M005985
irb(main):001:0> x="123 456 789"
=> "123 456 789"
irb(main):002:0> x.scan /\d{3}/
=> ["123", "456", "789"]
Jesus.
···
On Mon, Jan 4, 2010 at 8:53 AM, Ruby Newbee <rubynewbee@gmail.com> wrote:
Hello,
irb(main):001:0> x="123 456 789"
=> "123 456 789"
irb(main):003:0> if /\d{3}/ =~ x
irb(main):004:1> puts $&
irb(main):005:1> end
123
For the statement above, I want to capture all "123" and "456" and
"789", not the only "123".
How to do it (must use regex)? Thanks.
Jean_G
(Jean G.)
5
Thanks all for the quick response.
In perl there is a "/g" option which can be used for multi-matching.
# perl -le '$x="123 456 789"; @x=$x=~/\d{3}/g; print "@x"'
123 456 789
I try to find ruby's instead one, but never thought there is already a
scan method available.
Thanks.
Thanks all for the quick response.
In perl there is a "/g" option which can be used for multi-matching.
# perl -le '$x="123 456 789"; @x=$x=~/\d{3}/g; print "@x"'
123 456 789
I try to find ruby's instead one, but never thought there is already a
scan method available.
Note that even with #scan you have two options: you can either take the Array returned or use the block form to do something whenever a match occurs:
irb(main):004:0> s = "123 456 789"
=> "123 456 789"
irb(main):005:0> s.scan /\d+/
=> ["123", "456", "789"]
irb(main):006:0> s.scan /\d+/ do |match| p match end
"123"
"456"
"789"
=> "123 456 789"
Kind regards
robert
···
On 01/04/2010 09:33 AM, Ruby Newbee wrote:
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/