Разделение строки с несколькими разделителями в Ruby

Возьмем, к примеру, такую ​​строку:

options = "Cake or pie, ice cream, or pudding"

Я хочу иметь возможность разделить строку с помощью или , , и или .

Дело в том, что я смог это сделать, но только путем синтаксического анализа , и , или сначала , а затем разделение каждого элемента массива на или , а затем сглаживание результирующего массива как такового:

options = options.split(/(?:\s?or\s)*([^,]+)(?:,\s*)*/).reject(&:empty?);
options.each_index {|index| options[index] = options[index].sub("?","").split(" or "); }

Результирующий массив выглядит следующим образом: ["Cake", "pie "," мороженое "," пудинг " ]

Есть ли более эффективный (или более простой) способ разбить мою строку по этим трем разделителям?

11
задан Mark 1 June 2011 в 20:34
поделиться