> I am very new to ruby.  I was working my way through the tutorials. 
> However, it looks like the regular expressions seem broken; however, 
> since I am so new to ruby it could be me.  It would appear that the 
> regular expressions are not greedy.
> 
> I have the following code:
> 
> def showRE(a,re)
> 
> 	startMarker = "<<<"
> 	endMarker = ">>>"
> 
> 	if a =~ re
> 		"#{$`}#{startMarker}#{$&}#{endMarker}#{$'}"
> 	else
> 		"no match for '#{a}'"
> 	end
> end
> 
> 
> irb(main):012:0> showRE("abc123def", /\d*/)
> => "<<<>>>abc123def"
> irb(main):013:0> showRE("abc123def", /\d+/)
> => "abc<<<123>>>def"
> irb(main):014:0>
> 
> I thought that normally * was greedy and would try to match the
largest 
> string and not the tiniest.  If this is the case the "<<<" and ">>>" 
> should be around the number "123" in the output for the first attempt 
> similar to the second function call.  In the ruby docs, it states at
the 
> following URL:

It IS greedy: In your case it starts at the beginning, matches as many
digits as it can (zero) and returns the match. 'Greedy' means it will
match as many as it can from the start of the match, not that it will
look to find the largest match. Since your regexp is \d* it means it can
match zero digits.


> 
> http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UL
> 
> The following:
> 
> 	re  ?
> 
> 	Matches zero or one occurrence of re. The *, +, and {m,n}
modifiers are 
> greedy by default. Append a question mark to make them minimal.
> 
> Did I misinterpret something?  My ruby information:
> 
> ruby 1.8.1 (2003-12-25) [i386-openbsd3.5]
>