Wyrażenie regularne dla textu

0

Witam, Mam następujące wyrażenie:
("text", 12, 23, 21, "tsarsa")

Jak wygląda wyrażenie tak aby wyciągnąć dane w taki sposób:

text
12
23
21
tsarsa
1

@"\(""(.*?)"", (\d+), (\d+), (\d+), ""(.*?)""\)"

1

\("([^"]+)", (\d+), (\d+), (\d+), "([^"]+)"\)

0
ŁF napisał(a):

\("([^"])+", (\d+), (\d+), (\d+), "([^"])+"\)

tylko plusy wewnątrz nawiasów

oba działają - moja wersja jest 35% wolniejsza, ale mowa o 0,7us a moja mi się bardziej podoba :P

0

Niestety ale to nie działa:

            string input = "(1,\"TEST\",2)";

            Match[] matches = Regex.Matches(input, @"(\d+),\""([^\""]+)\"",(\d+)").Cast<Match>().ToArray();

            Console.Write(matches[0]);

W odpowiedzi otrzymuje:

1,"TEST",2

1

no przecież wszystko działa
w matches[0].Groups[1] masz 1, w matches[0].Groups[2] masz TEST a w 3 masz 2

niepotrzebnie escapujesz cudzysłów i strasznie zagmatwałeś
jeśli chcesz jedno przypasowanie to użyj Match zamiast Matches
wtedy kod wygląda tak:

Match match = Regex.Match(input, @"(\d+),""([^""]+)"",(\d+)");

Console.Write(match.Groups[x]);

1 użytkowników online, w tym zalogowanych: 0, gości: 1