[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Newby Ruby Regular Expression Question

Ruchira Bomiriya

6/12/2008 10:43:00 AM

Dear Expert,

I have recently started Ruby programming. I have used Perl before and
liked it mostly due to the power of regular expressions. But Ruby's
ability scale and modularize is absolutely amazing.

I want to find FOUR instances of A in the string "AaAbAcAd" using
regular expressions.

I tried

str = "AaAbAcAd"
md = str.match(/(A)/)

and get just one instance (seems like the last 'A')

The perl equivalent of what I really want is

$str = "AaAbAcAd"
@md = ($str =~ /A/g)

So what I really want to find out is if there is something equivalent
to the Perl g option available in Ruby. How would you get all FOUR
matches in a reasonable way?

Thanks in advance.
Ruchira
4 Answers

Robert Dober

6/12/2008 10:56:00 AM

0

On Thu, Jun 12, 2008 at 12:44 PM, Ruchira Bomiriya
<ruchira.bomiriya@gmail.com> wrote:
> Dear Expert,
>
> I have recently started Ruby programming. I have used Perl before and
> liked it mostly due to the power of regular expressions. But Ruby's
> ability scale and modularize is absolutely amazing.
>
> I want to find FOUR instances of A in the string "AaAbAcAd" using
> regular expressions.
>
> I tried
>
>
> and get just one instance (seems like the last 'A')
>
> The perl equivalent of what I really want is
>
> $str = "AaAbAcAd"
> @md = ($str =~ /A/g)

maybe String#scan does the same, sorry my perl times are too remote

str = "AaAbAcAd"
md = str.scan /A/

HTH
Robert



--
http://ruby-smalltalk.blo...

---
As simple as possible, but not simpler.
Albert Einstein

David A. Black

6/12/2008 11:30:00 AM

0

Hi --

On Thu, 12 Jun 2008, Ruchira Bomiriya wrote:

> Dear Expert,
>
> I have recently started Ruby programming. I have used Perl before and
> liked it mostly due to the power of regular expressions. But Ruby's
> ability scale and modularize is absolutely amazing.
>
> I want to find FOUR instances of A in the string "AaAbAcAd" using
> regular expressions.
>
> I tried
>
> str = "AaAbAcAd"
> md = str.match(/(A)/)
>
> and get just one instance (seems like the last 'A')
>
> The perl equivalent of what I really want is
>
> $str = "AaAbAcAd"
> @md = ($str =~ /A/g)
>
> So what I really want to find out is if there is something equivalent
> to the Perl g option available in Ruby. How would you get all FOUR
> matches in a reasonable way?

str.scan(/A/). I can't help wondering though... what made you think
that the A you got is the last A? (It's actually the first A.)


David

--
Rails training from David A. Black and Ruby Power and Light:
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
ADVANCING WITH RAILS July 21-24 Edison, NJ
See http://www.r... for details and updates!

Robert Dober

6/12/2008 1:26:00 PM

0

On Thu, Jun 12, 2008 at 1:29 PM, David A. Black <dblack@rubypal.com> wrote:
<snip>
> str.scan(/A/).
Hey it does not only happen to Rick, it happens to me too;)
Does this mean I am one of the best?
--
http://ruby-smalltalk.blo...

---
As simple as possible, but not simpler.
Albert Einstein

Ruchira Bomiriya

6/12/2008 3:43:00 PM

0

On Jun 12, 6:26 pm, Robert Dober <robert.do...@gmail.com> wrote:
> On Thu, Jun 12, 2008 at 1:29 PM, David A. Black <dbl...@rubypal.com> wrote:
> <snip>> str.scan(/A/).
>
> Hey it does not only happen to Rick, it happens to me too;)
> Does this mean I am one of the best?
> --http://ruby-smalltalk.blo...
>
> ---
> As simple as possible, but not simpler.
> Albert Einstein

Thanks Robert, str.scan(/A/) does what I wanted.

Sorry for the confusion with the last A issue. I was messing with
various regex patterns and some of them were greedy enough, took some
of my brain cells away and made me think stupid things.

But str.scan(/A/) has made me regain my faith in ruby's regular
expressions. Not that I was particularly skeptic, but was merely
stuck!

Thanks again.
Ruchira