Help for extracting text with regexp.

J

John Doe

Hi,

I'm having some trouble with the regexp :/

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.
 
P

Peter Hickman

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

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
 
J

Jesús Gabriel y Galán

Hi,

I'm having some trouble with the regexp :/

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)

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.
 
B

botp

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

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,049
Latest member
Allen00Reed

Latest Threads

Top