Learning Ruby

Hi, I come from a little bit of C programming, an I’ve just started
learning Ruby. So forgive me for the stupid question.
Following the user guide, I found a regular expression example
(rexg.rb), that doesn’t work for me.
If I try to find an exact pattern everything is fine: for example,
searching “foo” in “foobar” returns the correct result. But searching a
regexp pattern doesn’t: “fo+” doesn’t find anything in “foobar”.
I’m running Ruby 1.8 under Linux.
Thank you in advance for your help,

Cristiano

Urzahil wrote:

Hi, I come from a little bit of C programming, an I’ve just started
learning Ruby. So forgive me for the stupid question.
Following the user guide, I found a regular expression example
(rexg.rb), that doesn’t work for me.
If I try to find an exact pattern everything is fine: for example,
searching “foo” in “foobar” returns the correct result. But searching a
regexp pattern doesn’t: “fo+” doesn’t find anything in “foobar”.
I’m running Ruby 1.8 under Linux.
Thank you in advance for your help,

Could you provide the examples you have tried? I did not really get you,
as for me:

irb(main):003:0> “foobar” =~ /foo/
=> 0
irb(main):004:0> “foobar” =~ /fo+/
=> 0

your example works. Please send the code snippets which did not work for
you.

Peter
http://www.rubyrailways.com

Cristiano M. wrote:

your example works. Please send the code snippets which did not work for
print "str> "
STDOUT.flush
str = gets
break if not str
str.chop!
print "pat> "
STDOUT.flush
re = gets
break if not re
re.chop!
str.gsub! re, “#{st}\&#{en}”

Normal: this code is doing simple string lookup, as in this line, re
is a String and not a Regexp. You should try this instead:

str.gsub!(Regexp.new(re), “#{st}\&#{en}”)

Vince

Hi,

On Tue, 2006-10-31 at 20:00 +0900, Peter S. wrote:

Could you provide the examples you have tried? I did not really get you,
as for me:

irb(main):003:0> “foobar” =~ /foo/
=> 0
irb(main):004:0> “foobar” =~ /fo+/
=> 0
your example works. Please send the code snippets which did not work for
you.

I did not explain me too well.
This code works for me too. I was referring to the User Guide example.
Here is the code that doesn’t work for me:

st = “\033[7m”
en = “\033[m”

while TRUE
print "str> "
STDOUT.flush
str = gets
break if not str
str.chop!
print "pat> "
STDOUT.flush
re = gets
break if not re
re.chop!
str.gsub! re, “#{st}\&#{en}”
print str, “\n”
end
print “\n”

Thanks again,
Cristiano

On 10/31/06, Cristiano M. [email protected]
wrote:

=> 0
while TRUE
str.gsub! re, “#{st}\&#{en}”
print str, “\n”
end
print “\n”

Thanks again,
Cristiano

Not directly answering your question, but since you are still learning
ruby:

########## LOTSA CODE #########
st = “\033[7m”
en = “\033[m”

$stdout.sync = true

loop do
print "string> "
string = gets.chomp
print "pattern> "
pattern = gets.chomp

puts string.gsub pattern, “#{st}\&#{en}”
end
######## LOTSA CODE END ########

i think that would be a more ‘rubylike’ way to write it… also making
your intention a bit clearer :slight_smile:
you are not in C anymore, you can loosen your grip a little :wink:

^manveru

----- Original Message -----
From: “Peter S.” [email protected]
To: “ruby-talk ML” [email protected]omain.invalid
Sent: Tuesday, October 31, 2006 6:00 AM
Subject: Re: Learning R.

the 0 indicates that a match was found at offset 0

“foobar” =~ /oo/
=> 1

“foobar” =~ /boo/
=> nil

In ruby, 0 or empty string is not “false”, only nil or false are false
anything else is true

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs