bas*_*ibe 2 ruby regex string split
我有特殊的字符串name1="value1" name2='value2'.值可以包含空格,并由单引号或双引号分隔.名称永远不会包含空格.名称/值对由空格分隔.
我想将它们解析为这样的名称 - 值对列表
string.magic_split() => { "name1"=>"value1", "name2"=>"value2" }
Run Code Online (Sandbox Code Playgroud)
如果Ruby理解外观断言,我可以做到这一点
string.split(/[\'\"](?=\s)/).each do |element|
element =~ /(\w+)=[\'\"](.*)[\'\"]/
hash[$1] = $2
end
Run Code Online (Sandbox Code Playgroud)
但Ruby不理解外观断言,所以我有点卡住了.
但是,我确信无论如何都有更优雅的方法来解决这个问题,所以我转向你.你有解决这个问题的好主意吗?
这个失败的价值就像她说的"喜",但它可能已经足够了.
str = %q(name1="value1" name2='value 2')
p Hash[ *str.chop.split( /' |" |='|="/ ) ]
#=> {"name1"=>"value1", "name2"=>"value 2"}
Run Code Online (Sandbox Code Playgroud)