Announcement

Collapse
No announcement yet.

Problem mit Regulärem Ausdruck für EDI-FACT Dateien

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Regulärem Ausdruck für EDI-FACT Dateien

    Hallo zusammen

    Ich kniffle gerade an einem Programm, das EDI-FACT Dateien ausliest und in eine Oracledatenbank überträgt. Zum Glück brauche ich mich vorerst nicht mit der Logik der EDI-FACT Dateien (der Hierachie) auseinander zu setzen, da das in der DB gelöst wird.

    Der Eintrag ist lang, jedoch will ich die Situation etwas erläutern!

    Erst mal eine kleine Erklärung zu EDI-FACT Dateien und der Situation:

    EDI-FACT Dateien sind ähnlich aufgebaut, wie etwas zu komplex geratene CSV Dateien...

    Es gibt Segmente/Zeilen (getrennt durch '-Zeichen), jedes Segment ist unterteilt in Composites/Informationsabschnitte (getrennt durch +-Zeichen), die wiederum unterteilt sind in Elemente (getrennt durch :-Zeichen)

    Am besten ein Beispiel:
    Code:
    UNA:+.?'
    UNB+UNOA:1+5019069000008:ZZ+5420031800018:ZZ+070626:1325+3089++INSDES'
    UNH+1+INSDES:D:96A:UN:DELV'
    BGM+351::9+27516130+9'
    DTM+137:20070626:102'
    ...
    Die erste Zeile legt Meta- bzw Trennzeichen fest - und zwar für Elemente (: ), Composites (+), Dezimalzeichen (.),
    Maskierung (?) [entspricht dem Escapezeichen, z.B. in \n] und Segmente bzw. Zeilen (').

    Ich muss jetzt also eine Zeile in ihre Bestandteile auflösen...
    Als Beispiel:
    Code:
    UNH+1+INSDES:D:96A:UN:DELV'
    wird zu
    Code:
    Dim arrSegment() = {"UNH", "1", "INSDES", "D", "96A", "UN", "DELV"}
    Soweit, so gut...


    Für eine Funktion zum Verarbeiten dieser Werte benötige ich jedoch nicht die Inhalte sondern die Trennzeichen(: und +).
    Mit dem Regulären Ausdruck
    Code:
    [+:*]
    bekomme ich auch alle Doppelpunkte und Pluszeichen. Jedoch gibt es das böse Maskierungszeichen... D.h. ich benötige alle + und :, jedoch nicht diejenigen die ein Fragezeichen davor haben (?: bzw. ?+).

    Als Beispiel habe ich eine Zeile für Freitext (FTX):
    Code:
    FTX+DEL+1++Delivery?: 28/06/07 @ 0645'
    Ich habe inzwischen diverse mir logisch vorkommende Reguläre Ausdrücke ausprobiert, die jedoch alle nicht zum gewünschten Ergebnis geführt haben. Meiner Vermutung nach habe ich einen Denkfehler, da ich bis jetzt nur sehr einfache Ausdrücke benötigt habe und somit auch nicht viel Erfahrung damit habe.

    Ansätze waren z.B.
    Code:
    (^[\?][:|+]|[:+]) ' liefert mir allerdings auch den Doppelpunkt nach dem ?
    (^[\?]?[:|+]) ' totaler Unsinn.. und liefert auch überhaupt kein Ergebnis
    ...
    Für einen Ansatz oder eine Erklärung wäre ich euch sehr dankbar.

    Vielen Dank
    Christoph
    Zuletzt editiert von cmuebro; 25.09.2007, 11:07. Reason: Rechtschreibung :)
Working...
X