Ich versuche, alle Übereinstimmungen aus einer EBML-Definition zu extrahieren, die in etwa wie folgt aussieht:
| + 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
...
Ich möchte alle Vorkommen von "Sprache: ???", wenn davor "Track type: subtitles" steht. Ich habe mehrere Varianten ausprobiert:
Track type: subtitles.*Language: (\w\w\w)
Ich verwende den Mehrzeilenmodifikator in Ruby, damit er mit Zeilenumbrüchen übereinstimmt (wie der 's'-Modifikator in anderen Sprachen).
Dies funktioniert, um die zuletzt Vorkommen, was im obigen Beispiel beispielsweise "jpn" wäre:
string.scan(/Track type: subtitles.*Language: (\w\w\w)/m)
=> [["jpn"]]
Das Ergebnis würde ich gerne sehen:
=> [["eng"], ["jpn"]]
Was wäre eine korrekte Regex, um dies zu erreichen?