Laden...

Regex: Mehrere Elemente durch Wörter getrennte Daten auflisten

Erstellt von Palladin007 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.182 Views
Palladin007 Themenstarter:in
2.080 Beiträge seit 2012
vor 8 Jahren
Regex: Mehrere Elemente durch Wörter getrennte Daten auflisten

Hi,

ich habe einen durchaus sehr umfangreiches Daten-Format, das möglichst mit Regex in eine Objekt-Struktur parsen möchte.

Hintergrund:
Das Format kann sich auch ändern und ist leider nicht so flexibel, aktuell müsste ich bei jeder noch so kleinen Format-Änderung den Programm-Source ändern.
Daher war mein Gedanke, dass ich über ein oder mehrere Regex-Patterns das Format beschreibe und die Inhalte über fest gelegte Gruppen-Namen erreichbar mache. Diese Patterns kann ich dann nach der Kompilierung ändern.

Das Problem dabei ist aber, dass Teile der Daten mit dem selben Format sich in einer unbekannten Zahl wiederholen können, also eine Liste. Wie ich eine Liste matchen kann, weiß ich, aber gibt es eine Möglichkeit, jedes Listenelement als Wert einer hoch gezählten Gruppe zu erreichen?

Ich habe also folgenden Datensatz:

Wert1§~Wert2§~Wert§~Wert4§~Wert5

Und heraus bekommen möchte ich Wert1 bis Wert4.

Beste Grüße

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.

1.361 Beiträge seit 2007
vor 8 Jahren

Das kannst du mit Regex Groups and Captures lösen.
Schau dir mal das zweite Beispiel zu Group.Captures an.

Ein möglicher Regex wäre beispielsweise:

(?<value>\w+)(?:§~(?<value>\w+))*

Und dann beispielsweise auf Wert an dritter Stelle (Index 2):

myregex.Match(...).Groups["value"].Captures[2].Value

beste Grüße
zommi

Palladin007 Themenstarter:in
2.080 Beiträge seit 2012
vor 8 Jahren

Hey, das funktioniert genau so wie ich mir das vor gestellt habe.
Ich hab's eingebaut und es rennt wie eine 1, auf Anhieb fehlerfrei - bisher zumindest 😄

Danke dir 😃

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.