Возьмем, к примеру, такую строку:
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 "," мороженое "," пудинг " ]
Есть ли более эффективный (или более простой) способ разбить мою строку по этим трем разделителям?