Расщепление строки повторяющимся регулярным выражением в Ruby - PullRequest
0 голосов
/ 03 января 2011

Я хотел бы разобрать текст и разделить его на задачи и подзадачи:

'Asubsubsubtask:Bsubtask:Ctask:D'.split(/((sub)*task)\:/i)
#=> ["A", "subsubsubtask", "sub", "B", "subtask", "sub", "C", "task", "D"]

Последняя часть массива результатов не согласована и не позволяет использовать #each_slice(3) для обработки массива.

Что бы вы предложили мне использовать вместо сопоставления каждого элемента массива с похожим регулярным выражением?

EDIT1:

Более подробный пример:

Task: Main
description
Defaults: some params

Subtask: Basic
description
Options: A B C

Subsubtask: Reading
description
Parameters: some params

и я пытаюсь разделить его на /^((sub)*task)\:/i

1 Ответ

1 голос
/ 03 января 2011

Разделите его на два split звонка:

irb(main):007:0> 'Asubsubsubtask:Bsubtask:Ctask:D'.split(':').collect{|s| s.split(/((sub)*task)/i)}
=> [["A", "subsubsubtask", "sub"], ["B", "subtask", "sub"], ["C", "task"], ["D"]]
...