The simplest way is probably to use a regex:
Dim regex As New Regex("\[(?<filename>[^\]]*)\](?<text>.*)\[/\k<filename>\]", RegexOptions.IgnoreCase Or RegexOptions.Multiline Or RegexOptions.Singleline Or RegexOptions.CultureInvariant Or RegexOptions.IgnorePatternWhitespace Or RegexOptions.Compiled)
Dim ms As MatchCollection = regex.Matches(InputText)</filename></text></filename>
This captures each file into a separate match, each with two groups: "Filename" and "Text".