Что может быть регулярным выражением ruby для получения указанного значения c для данной строки? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть строка, подобная приведенной ниже:

"[a06aad57-5671-482e-dbdd81dc39b1]   Parameters: {\"ToCountry\"=>\"US\", \"ToState\"=>\"AL\", \"SmsMessageSid\"=>\"SMa1a9e32a7503f7342b7065d77174d\"}"  

Я хотел бы захватить только значение 'Parameters:', как показано ниже, и преобразовать его в ха sh. Ключ / значение может быть любым значением в необработанной строке:

{"ToCountry" => "US", "ToState" => "AL", "SmsMessageSid" => "SMa1a9e32a7503f3767342b7065d77174d"}

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Вы можете сделать это за несколько шагов:

require 'json'

string = "[a06aad57-5671-482e-dbdd81dc39b1]   Parameters: {\"ToCountry\"=>\"US\", \"ToState\"=>\"AL\", \"SmsMessageSid\"=>\"SMa1a9e32a7503f7342b7065d77174d\"}"
prepared_string = string.match(/Parameters:(.*)/)[1].gsub("=>", ":")
json = JSON.parse(prepared_string)
#=> {"ToCountry"=>"US", "ToState"=>"AL", "SmsMessageSid"=>"SMa1a9e32a7503f7342b7065d77174d"}
0 голосов
/ 12 февраля 2020

Не с помощью регулярных выражений и не лучший подход к оценке пользовательского ввода, но это сделает это:

eval str.split("Parameters: ")[1]
...