用于捕获给定字符串的特定值的 ruby 正则表达式可以是什么?

What can be the ruby regex for capturing specific value for given string?

我有如下字符串:

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

我只想如下所示捕获“Parameters:”的值并将其转换为散列。 Key/value 可以是上述原始字符串中的任何值:

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

不是通过正则表达式,也不是评估用户输入的最佳方法,但这可以做到:

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

您可以通过几个步骤完成:

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"}