From: Dave Thomas Date: 2000-09-02T18:32:51+09:00 Subject: [ruby-talk:4743] Re: Possible regex bug? "Conrad Schneiker" writes: > I guess I didn't read the docs carefully enough. The reason I didn't mention > this was that I had presumed that Ruby's regular expressions were greedy by > default, unless you explicitly indicated otherwise, just as I thought Perl's > were. (I don't have my manuals and docs with me, so I haven't checked this, > and could be wrong about that too. However, if Ruby and Perl do differ in > this regard, is there a good reason for this?) Perl: my @a = split(/,? */, "1.2, 3.4, 5.6/"); print join(":", @a), "\n"; -> 1:.:2:3:.:4:5:.:6:/ Both Perl and Ruby' regular expressions _are_ greedy by default. However, they're also lazy: they stop once they find the first match. Think of this case: "ooXXooXXXXXXXXX" =~ /X+/ You'd expect it to match the first set of X's. It doesn't say "hmm.. I've found two X's, but maybe there's a string of 10 coming up, so I'll keep on looking." It's exactly the same with these zero-length-matching patterns. _If_ is happens to come across a ',' followed by a space, it will greedily eat it up. If it doesn't, and the match succeeds anyway, it's happy. So, in this respect, Perl and Ruby do the same thing. Regards Dave