Regular Expression help needed

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

···

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

Not too pretty but gets the job done:

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

Diogo

···

On Thu, Nov 20, 2008 at 6:34 PM, Raju Alluri <avr_1@yahoo.com> wrote:

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

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

einarmagnus

···

On 20.11.2008, at 20:34 , Raju Alluri wrote:

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
--
Posted via http://www.ruby-forum.com/\.

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.