将字符串格式的参数解析为数组,但请遵循默认参数中的嵌套逗号

时间:2012-03-24 14:43:51

标签: ruby regex

我正在编写一个带有像这样的字符串的ruby方法

"foo = { :foo => 'bar', :baz => \"{'foo' : 'bar', 'bar' : 'biff' }\" :bar => 'baz' }, bar, baz = \"('foo,bar,baz')\", &block"

并返回一个如下数组:

["foo = { :foo => 'bar', :baz => \"{'foo' : 'bar', 'bar' : 'biff' }\" :bar => 'baz' }", "bar", "baz = \"('foo,bar,baz')\"", "&block"]

然而,到目前为止,我无法正确分割字符串,我的最大努力仍然打破内部哈希上的字符串,例如

"foo = { :foo => 'bar', :baz => \"{'foo' : 'bar', 'bar' : 'biff' }\" :bar => 'baz' }, bar, "baz = \"('foo,bar,baz')\", &block".scan(/(?:[^,(]|\([^)]*\))+/)

产生:

["foo = { :foo => 'bar'", " :baz => \"{'foo' : 'bar'", " 'bar' : 'biff' }\" :bar => 'baz' }", " bar", " baz = \"('foo,bar,baz')\"", " &block"] 

我认为我使用的正则表达式很接近,但我不确定如何检查括号和大括号。目前,正则表达式只搜索括号。

这是我目前的正则表达式:

/(?:[^,(]|\([^)]*\))+/

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这不适合你?

string.split(',')