Regular Expression help needed


#1

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


#2

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


#3

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


#4

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.