Я пишу метод 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"]
Я думаю, что регулярное выражение, которое я использую, близко, но я не уверен, как проверить скобки и фигурные скобки. В настоящее время регулярное выражение ищет только скобки.
Это мое текущее регулярное выражение:
/(?:[^,(]|\([^)]*\))+/
Любая помощь очень ценится.