Я пытаюсь извлечь все совпадения из определения EBML, которое выглядит примерно так:
| + A track
| + Track number: 3
| + Track UID: 724222477
| + Track type: subtitles
...
| + Language: eng
...
| + A track
| + Track number: 4
| + Track UID: 745646561
| + Track type: subtitles
...
| + Language: jpn
...
Я хочу, чтобы все вхождения "Language: ???" когда ему предшествует "Тип трека: субтитры". Я попробовал несколько вариантов этого:
Track type: subtitles.*Language: (\w\w\w)
Я использую многострочный модификатор в Ruby, чтобы он соответствовал символам новой строки (как модификатор 's' в других языках).
Это работает для получения последнего вхождения, которое в приведенном выше примере будет 'jpn', например:
string.scan(/Track type: subtitles.*Language: (\w\w\w)/m)
=> [["jpn"]]
Результат, который я хотел бы:
=> [["eng"], ["jpn"]]
Что было бы правильным регулярным выражением для достижения этой цели?