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.

···

--
Posted via http://www.ruby-forum.com/.

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.

···

On Wed, May 6, 2009 at 9:18 AM, Sriram Varahan <sriram.varahan@gmail.com> wrote:

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.

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

···

--
Posted via http://www.ruby-forum.com/.

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

···

2009/5/6 Robert Dober <robert.dober@gmail.com>:

On Wed, May 6, 2009 at 9:18 AM, Sriram Varahan <sriram.varahan@gmail.com> wrote:

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.

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.

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

He only wanted the first occurrence of zip I think.

Jayanth

···

On Wed, May 6, 2009 at 4:33 PM, Robert Klemme <shortcutter@googlemail.com>wrote:

2009/5/6 Robert Dober <robert.dober@gmail.com>:
> On Wed, May 6, 2009 at 9:18 AM, Sriram Varahan <sriram.varahan@gmail.com> > wrote:
>> 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.
> 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

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

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

···

2009/5/6 Srijayanth Sridhar <srijayanth@gmail.com>:

He only wanted the first occurrence of zip I think.

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/