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
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
@"\(""(.*?)"", (\d+), (\d+), (\d+), ""(.*?)""\)"
\("([^"]+)", (\d+), (\d+), (\d+), "([^"]+)"\)
Ł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
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
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]);