Help for extracting text with regexp

Hi,

I'm having some trouble with the regexp :confused:

I'm messing up with the match, scan methods, I'm not sure wich one I
should use.

Here's what I'm trying to do :

I have a string that's an URL with get values :
Ex :
foo.bar/somePath/somepage.php?attr=value&theone=64646hs554&other=ddd

What I need is the value of the "theone" attribute.
This attribute may or may not be the last one in the string !

I don't know if it's possible to put the two cases in one regexp...

Here are my two regexp :

If it's not the last attribute
/session=(.*?)&/
If it's the last attribute
/session=(.*?)$/

What should I use next to extract the value ? scan or match ?

myString.scan(/session=(.*?)&/) ?
How can I handle the two situation ?

Thanks a lot for your help !

(Sorry for my english)

Pollop.

路路路

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

You know what they say, if you choose to use a regex you've got
another problem :frowning:

How about this?

a = "foo.bar/somePath/somepage.php?attr=value&theone=64646hs554&other=ddd"

a.split(/\?|&/).each do |b|
聽聽if b =~ /^theone=(.*)/
聽聽聽聽puts $1
聽聽end
end

URI and CGI from the standard library will do the work for you:

irb(main):001:0> require 'uri'
=> true
irb(main):002:0> require 'cgi'
=> true
irb(main):004:0> params =
CGI.parse(URI.parse("foo.bar/somePath/somepage.php?attr=value&theone=64646hs554&other=ddd").query)
=> {"other"=>["ddd"], "theone"=>["64646hs554"], "attr"=>["value"]}
irb(main):005:0> params["theone"]
=> ["64646hs554"]
irb(main):006:0> params["theone"].first
=> "64646hs554"

Jesus.

路路路

On Fri, Feb 18, 2011 at 4:02 PM, John Doe <netiqicufenihyse@tempomail.fr> wrote:

Hi,

I'm having some trouble with the regexp :confused:

I'm messing up with the match, scan methods, I'm not sure wich one I
should use.

Here's what I'm trying to do :

I have a string that's an URL with get values :
Ex :
foo.bar/somePath/somepage.php?attr=value&theone=64646hs554&other=ddd

What I need is the value of the "theone" attribute.
This attribute may or may not be the last one in the string !

I don't know if it's possible to put the two cases in one regexp...

Here are my two regexp :

If it's not the last attribute
/session=(.*?)&/
If it's the last attribute
/session=(.*?)$/

What should I use next to extract the value ? scan or match ?

myString.scan(/session=(.*?)&/) ?
How can I handle the two situation ?

Thanks a lot for your help !

(Sorry for my english)

there are many ways.
sometimes, we just need to focus on what we need... eg,

Hash[* "foo.bar/somePath/somepage.php?attr=value&theone=64646hs554&other=ddd".scan(/(\w+)=(\w+)/).flatten]

#=> {"attr"=>"value", "theone"=>"64646hs554", "other"=>"ddd"}

best regards -botp

路路路

On Fri, Feb 18, 2011 at 11:02 PM, John Doe <netiqicufenihyse@tempomail.fr> wrote:

foo.bar/somePath/somepage.php?attr=value&theone=64646hs554&other=ddd
What I need is the value of the "theone" attribute.

Thanks a lot for your help ! :smiley:

路路路

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