Forum: Ruby Regular Expression help needed

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.
Raju A. (Guest)
on 2008-11-20 22:38
Hi,
I have the following text as a string. Can someone tell me a way to
extract the Args array in to different key value pairs as listed in the
example ?

Request={Identities={ImmedCaller={Name=unknown,
SubjectID=abcd1:sid:00000000-0000-0000-0000-000000000000}},
Args=[{adpage=1, useragent=NORMAL, q=Digital Camera, adtest=off,
searchalias=aps, mkt=us, ch=all-product-search, nodeList=, lang=en,
adcount=a3b0c3, ip=110.155.15.777}], Service=WebSearchClientService,
Metadata={GUID=0Q1C11GKER2MEDM5RQDY, Domain=prod,
Host=woe-us-preprod-gp-5106.iad5.xyz.com, AppVersion=*, UserName=nobody,
ClientExit=/gp/search/construct-application-context.mi
[retail]:.SECOND_PREPARE, ProcessID=23480, TTL=1.0, Sandbox=*,
Priority=1.0, DeploymentID=70026525, EnvName=RetailWebsite/US,
DepartureTimestamp=Mon Nov 10 17:30:58 GMT 2008, Realm=USXYz,
AppName=gurupa, ClientEntry=/gp/search},
Shared={sessionID=nNo5yA.xUpGCpgbhuaVn8zG2xXM_,
clientID=168v1upXnQTYihGa9iDnty-o9z4_,
sessionIDPlain=176-2496192-6342626, customerIDPlain=A2LOKEDOEV0ZP5,
customerID=MHuB7vXfQZbKXH9-U7M7ZZfvy3Q_,
clientIDPlain=189-5451931-2768662}, Method=WebSearch}

eg:
adpage=1
useragent=NORMAL
q=Digital Camera
adtest=off
mkt=us
ch=all-product-search
adcount=a3b0c3


Thanks in Advance.
Raju
Diogo L. (Guest)
on 2008-11-20 23:06
(Received via mailing list)
On Thu, Nov 20, 2008 at 6:34 PM, Raju A. <removed_email_address@domain.invalid> 
wrote:
> Metadata={GUID=0Q1C11GKER2MEDM5RQDY, Domain=prod,
> clientIDPlain=189-5451931-2768662}, Method=WebSearch}
>
> eg:
> adpage=1
> useragent=NORMAL
> q=Digital Camera
> adtest=off
> mkt=us
> ch=all-product-search
> adcount=a3b0c3
>

Not too pretty but gets the job done:

str =~ /Args=\[\{(.*)\}\]/
hash = Hash[*$1.gsub(', ',',').split(/[,=]/)]


Diogo
Einar Magnús Boson (Guest)
on 2008-11-21 06:04
(Received via mailing list)
On 20.11.2008, at 20:34 , Raju A. wrote:

> adcount=a3b0c3, ip=110.155.15.777}], Service=WebSearchClientService,
> sessionIDPlain=176-2496192-6342626, customerIDPlain=A2LOKEDOEV0ZP5,
> adcount=a3b0c3
>
>
> Thanks in Advance.
> Raju
> --
> Posted via http://www.ruby-forum.com/.
>


hash = {}
data.match(/Args=\[(\{[^}]*)/)[1].scan(/(\w+)=([^,]*)/) do |key, val|
  hash[key] = val
end

einarmagnus
Mark T. (Guest)
on 2008-11-21 16:55
(Received via mailing list)
It's obviously some sort of object serialization format. I can't tell
exactly which format though. Do you have access to the code that
created it? There's a chance you'd be able to import it directly into
a data structure.

-- Mark.
This topic is locked and can not be replied to.