Как уже упоминала Эми, ваша строка выглядит как CSV. Если это действительно действительный CSV - используйте специальные библиотеки.
Если CSVHelper не применим в этом случае и вам действительно нужно регулярное выражение, попробуйте что-то вроде этого:
(?<=(?:^| ))(.*?)(?=(?: \")|$)
У меня есть не кодируется для C#, поэтому регулярное выражение может нуждаться в некоторых изменениях из-за c# speci c.
Edit. Пример кода.
using System;
using System.Linq;
using System.Text.RegularExpressions;
class MainClass {
public static void Main (string[] args) {
const string rawLine = "\"TeamName\",\"PlayerName\",\"Position\" \"Chargers\",\"Philip Rivers\",\"QB\" \"Colts\",\"Peyton Manning\",\"QB\" \"Patriots\",\"Tom Brady\",\"QB\"";
//var parsedLines = Regex.Split(rawLine, "(?<=(?:^| ))(.*?)(?=(?: \")|$)");
var parsedLines = Regex.Split(rawLine, "(?<=^)(.*?)(?=(?: \")|$)|(?<= )(.*?)(?=(?: \")|$)");
parsedLines.ToList().ForEach(Console.WriteLine);
Console.WriteLine("Press [ENTER] to exit.");
Console.ReadLine();
}
}
Этот код с «грязным» исправлением ошибки утверждения. Однако я не могу воспроизвести его с помощью onlinetool :) Оригинальное регулярное выражение прокомментировано в этом примере.
Надеюсь, это поможет вам. Но я должен сказать еще раз, если вы работаете с CSV - лучше использовать специальные инструменты, а не регулярное выражение:)