A pattern such as this should give you an idea of how to match what you're looking for:
(?<1>\w+);(?<2>.*\w{2}-\w{2}):(?<3>\w+);(?<4>\w+);(?<5>\w+);(?<6>\w+.)
example: http://regex101.com/r/jX6lA3
In vb.net you might code it similar to this:
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "(?<1>\w+);(?<2>.*\w{2}-\w{2}):(?<3>\w+);(?<4>\w+);(?<5>\w+);(?<6>\w+.)"
Dim input As String = vCard.String
Dim matches As MatchCollection = Regex.Matches(input, pattern)
For Each match As Match In matches
Console.WriteLine("1: ", match.Groups["1"]).Value)
Console.WriteLine("2: ", match.Groups["2"]).Value)
Console.WriteLine("3: ", match.Groups["3"]).Value)
Console.WriteLine("4: ", match.Groups["4"]).Value)
Console.WriteLine("5: ", match.Groups["5"]).Value)
Console.WriteLine("6: ", match.Groups["6"]).Value)
Console.WriteLine()
Next
Console.WriteLine()
End Sub
End Module
If of course you wanted to use the regex pattern you already have it's pretty simple to adapt the code to arrange your groups however you want them. So for example, the prefix which is ("strPrefix" in your pattern) could be called and arranged whenever/however you like:
Console.WriteLine("Prefix: ", match.Groups["strPrefix"].Value)