[#4766] Wiki — "Glen Stampoultzis" <trinexus@...>

21 messages 2000/09/04
[#4768] RE: Wiki — "NAKAMURA, Hiroshi" <nahi@...> 2000/09/04

Hi, Glen,

[#4783] Re: Wiki — Masatoshi SEKI <m_seki@...> 2000/09/04

[#4785] Re: Wiki — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/09/05

Howdy,

[#4883] Re-binding a block — Dave Thomas <Dave@...>

16 messages 2000/09/12

[#4930] Perl 6 rumblings -- RFC 225 (v1) Data: Superpositions — Conrad Schneiker <schneik@...>

Hi,

11 messages 2000/09/15

[#4936] Ruby Book Eng. translation editor's questions — Jon Babcock <jon@...>

20 messages 2000/09/16

[#5045] Proposal: Add constants to Math — Robert Feldt <feldt@...>

15 messages 2000/09/21

[#5077] Crazy idea? infix method calls — hal9000@...

This is a generalization of the "in" operator idea which I

17 messages 2000/09/22

[#5157] Compile Problem with 1.6.1 — Scott Billings <aerogems@...>

When I try to compile Ruby 1.6.1, I get the following error:

15 messages 2000/09/27

[ruby-talk:4736] Re: Possible regex bug?

From: Dave Thomas <Dave@...>
Date: 2000-09-01 23:01:51 UTC
List: ruby-talk #4736
hal9000@hypermetrics.com writes:

> OK, I'm trying to match an optional comma followed by
> one or more spaces...
> 
> The sample program regx.rb leads me to believe that
> this will work: /,? */

Always be careful with patterns containing '*'. For example,

   'caaaaaat'  =~ /a*/    # => 0
   p $&                   # => ""

/a*/ matched the string by matching exactly _zero_ 'a's at the start.

> But: p "4.2, 3.1, 5.3".split(/,? */)

Your pattern also matches a zero length string: 'no commas and no
spaces'. This is why split isn't doing what you want.

However, in your problem definition, you said you wanted an optional
comma followed by _one_ or more spaces. That's a different beast:

   "4.2, 3.1, 5.3".split(/,? +/) # => ["4.2", "3.1", "5.3"]

                             ^
     one or more... ---------+

You could also have used scan:

   "4.2, 3.1, 5.3".scan(/[\d.]+/) # => ["4.2", "3.1", "5.3"]


Regards


Dave

In This Thread