title: RegExp: match everything till next occurrence
body: <p>I'm trying to split lyrics into sections with <code>name = group(1)</code> and <code>lyrics = group(2)</code> using RegExp:</p>
  <pre><code>#Chorus              &lt;-- section name [group(1)]
  This is the chorus   &lt;-- section lyrics [group(2)]
  Got no words for it  &lt;-- [group(2)]
  
  #Verse               &lt;-- next section name
  This is the verse    &lt;-- next section lyrics
  </code></pre>
  <p>I've managed to split the first occurrence of <code>group(1)</code> from the rest but it matches all the other occurrences to <code>group(2)</code>.</p>
  <pre><code>List&lt;SongSection&gt; _sections = [];
  
  RegExp regExp = RegExp(r'\n#([a-zA-Z0-9]+)\n((.|\n)*)', multiLine: true);
  List&lt;RegExpMatch&gt; matches = regExp.allMatches('\n' + lyrics).toList();
  
  for (RegExpMatch match in matches) {
    _sections.add(
      SongSection(
        name: match.group(1)!,
        lyrics: match.group(2)!.trim(),
      ),
   );
  }
  
  print(_sections.toString())
  
  </code></pre>
  <pre><code>OUTPUT:
  [SongSection(name: 'Chorus', lyrics: 'This is the chorus\nGot no words for it\n\n#Verse\nThis is the verse')]
  </code></pre>
  <p>How can I always match everything up to the next occurrence of <code>group(1)</code>?</p>