Hallo,
ich durchlaufe ein Textfile und möchte beim Zutreffen eines Ausdruckes die Zeile auswerten.
Hier ein Ausschnitt des Textes:
part "Z2004"
part "Z2005"
part "Z2006"
part "ZZ186"
part "J15",1
part "J24",1
part "J100",1
part "J103",1
part "J108",1
Ich möchte nur die jenigen Zeilen die nicht mit ",1" enden.
Das Ganze habe ich so versucht:
if(Regex.IsMatch(line_pdw,"(part)[\" \"][\"][a-zA-Z0-9]+[\"][^,]")){
// do something
}
Der letzte Abschnitt, also [^,] wirkt irgendiwe nicht, keine Ahnung warum.
Kann mir jemand von euch weiter helfen?
Danke
Gruß
Andreas
return listOfLines.Where(line => !line.EndsWith(",1"));
RegEx für solche Aufgaben ist, als ob du mit einer Pinzette Sand schaufelst. Es geht, dauert aber ein bisschen.
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Ich muss gestehen, ich verstehe nicht so ganz, was Du da gemacht hast 😄
Wenn ich das mit Regex lösen würde, dann wäre das mein Pattern:
part\s+"[a-zA-Z0-9]+"\s*$
Oder hier: https://regex101.com/r/zM2mN6/1/
ABER!
Regex ist sehr langsam und sicher nicht die richtige Wahl, wenn es darum geht, groß Mengen so simpler Zeichenfolgen zu filtern.
Prüfe lieber mit .EndsWith, ob die Zeilen mit ,1 enden, das sollte deutlich schneller laufen.
PS:
LaTino war schneller 😄
Aber das Bild mit der Pinzette Sand schaufeln ist gut 😄
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Hallo allgaeu73,
dein Pattern enthält einige Merkwürdigkeiten und du meinst vermutlich eher:
"part \"[a-zA-Z0-9]+\"[^,]"
Das Problem damit ist, dass du damit erzwingst, dass hinter dem letzten Anführungszeichen ein Zeichen folgt (also folgen muss), welches kein Komma ist. Bei den gültigen Zeilen folgt aber gar kein Zeichen.
Wenn du ausdrücken willst, dass kein Komma folgen soll, egal was stattdessen oder ob überhaupt etwas folgt, dann bräuchtest du einen negativen look ahead, also (?!,)
statt [^,]
Insgesamt also
part \"[a-zA-Z0-9]+\"(?!,)
Oder wenn bei den gültigen Zeilen tatsächlich nie etwas folgt, dann reicht es auch, genau das auszudrücken:
part \"[a-zA-Z0-9]+\"$
herbivore