Hilfe bei Regex benötigt

10/12/2008 - 16:22 von Thomas Meutzner | Report spam
Hallo,

ich habe ein Problem mit der Benutzung von Regex.
Ich möchte in einem Text alle Eintràge vom Typ
<Bezeichnung;Index;Typ;Auswahl;Value;Index bei Auswahl> finden.

Der Text lautet z.B. : "Dies ist ein Tatbestand mit <;1;;;;0> leeren
<;2;;;;0> Textmarken." und der regulàre Ausdruck dafür
"<;\d{0,9};+\w.*|\w;>".


Mein Problem dabei ist, dass bei meiner Suche die "Felder" Bezeichung
und Value leer sein müssen.
Mit meinem oben genannten regulàren Ausdruck findet er im Text nur
<;1;;;;0> leeren <;2;;;;0> Textmarken. Er soll mir aber <;1;;;;0> und
<;2;;;;0> als getrennte Ergebnisse anzeigen.
Hat jemand eine Idee wie ich den Ausdruck aufbauen muss?
Danke
MfG
Thomas
 

Lesen sie die antworten

#1 Ulf Kadner
10/12/2008 - 18:34 | Warnen spam
Hallo Thomas Meutzner, Du schriebst:

Ich möchte in einem Text alle Eintràge vom Typ
<Bezeichnung;Index;Typ;Auswahl;Value;Index bei Auswahl> finden.

Der Text lautet z.B. : "Dies ist ein Tatbestand mit <;1;;;;0> leeren
<;2;;;;0> Textmarken." und der regulàre Ausdruck dafür
"<;\d{0,9};+\w.*|\w;>".



Also suchst Du in Worte gefaßt nach etwas:

- das mit einer spitzen öffnende Klammer beginnt
- mit > endet
- kein > innerhalb der Spitzen klammern enthalten darf

<[^>]+>

Das ist natürlich zu unpràzise

- nach < dürfen 0-n Zeichen die kein ; oder > sind stehen
- dannach muß ein ; kommen
- dannach eine Zahl

<[^;]*;\d+[^>]+>

könnte je nach Gegebenheit bereits für Dein Vorhaben reichen

Wenn Du prüfen willst ob pràzise der Aufbau mit der vordefinierten Menge
an Trennzeichen erfüllt wird:

<[^;]*;\d+(;[^;]*){3};\d+>

Aber das hat eigentlich nichts mit C# zu tun.
Empfehlung: Kauf Dir ein Buch zu regulàren Ausdrücken.
Die Grundsyntax ist in sehr vielen Sprachen die Selbe. Wenn Du Regex
kannst kannst Du diese in jeder beliebigen Sprache oder Umgebung
einsetzt. Da sind dann u.U. zwar noch Feinheiten der Sprache zu beachten
aber das ist lapidar.

MfG, Ulf

Ähnliche fragen