Ruby Regex

Hello,

I have this string:

"d:\\home\\abc2.zip\\abc.zip\\abc.com"

I need to extract the contents up to the first occurrence of zip which
would be:

“d:\home\abc2.zip”

When i use a regex like: (.+).zip\ it gives me the entire contents upto
the second zip.

“d:\home\abc2.zip\abc.zip” which is not what I am looking for.

Any solution to this?

Thanks.
Sriram.

On Wed, May 6, 2009 at 9:18 AM, Sriram V.
[email protected] wrote:

“d:\home\abc2.zip”

When i use a regex like: (.+).zip\ it gives me the entire contents upto
the second zip.
Why are you so greedy Sriram ;)? Well it is not you it is the “+”
which is greedy, try the non greedy version “+?” it might just give
you a nice surprise.
R.

Was definitely a nice surprise! Thanks Robert for your help :slight_smile:

2009/5/6 Robert D. [email protected]:

“d:\home\abc2.zip”

When i use a regex like: (.+).zip\ it gives me the entire contents upto
the second zip.
Why are you so greedy Sriram ;)? Well it is not you it is the “+”
which is greedy, try the non greedy version “+?” it might just give
you a nice surprise.

Why not use File.dirname?

irb(main):003:0> File.dirname “d:\home\abc2.zip\abc.zip\abc.com”
=> “d:\home\abc2.zip\abc.zip”

Cheers

robert

He only wanted the first occurrence of zip I think.

Jayanth

2009/5/6 Srijayanth S. [email protected]:

He only wanted the first occurrence of zip I think.

Ah, yes. I overlooked that. Sorry for the noise.

IMHO an anchor is in order:

irb(main):001:0> “d:\home\abc2.zip\abc.zip\abc.com”[/\A.*?.zip/]
=> “d:\home\abc2.zip”

Cheers

robert