Forum: Ruby Ruby Regex

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Sriram V. (Guest)
on 2009-05-06 11:18
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.
Robert D. (Guest)
on 2009-05-06 11:34
(Received via mailing list)
On Wed, May 6, 2009 at 9:18 AM, Sriram V.
<removed_email_address@domain.invalid> 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.
Sriram V. (Guest)
on 2009-05-06 11:46
Was definitely a nice surprise! Thanks Robert for your help :)
Robert K. (Guest)
on 2009-05-06 15:04
(Received via mailing list)
2009/5/6 Robert D. <removed_email_address@domain.invalid>:
>>
>>  "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
Srijayanth S. (Guest)
on 2009-05-06 15:08
(Received via mailing list)
He only wanted the first occurrence of zip I think.

Jayanth
Robert K. (Guest)
on 2009-05-06 15:54
(Received via mailing list)
2009/5/6 Srijayanth S. <removed_email_address@domain.invalid>:
> 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
This topic is locked and can not be replied to.