Zur Boardunity Forenstartseite

Zurück   Boardunity & Video Forum » Technik » Programmierung und Datenbanken

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1  
Alt 25.09.2007, 12:20
Programmierer
 
Registriert seit: 09.2007
Beiträge: 5

Problem mit Regulärem Ausdruck


Hallo zusammen,

ich suche eine Möglichkeit folgende Zeichenkette korrekt mit einem Regulären Ausdruck auszuwerten:

Code:
 RFF+123:123:Test?:412:asd'
Zum Auswerten benötige ich alle + und : jedoch nicht die mit einem Fragezeichen davor.

Also müsste ich am Beispiel als Ergebnis bekommen:

Code:
+:::
Der Doppelpunkt mit dem Fragezeichen davor dürfte also nicht in der Ergebnismenge liege.

Habe schon viel ausprobiert, komme aber einfach auf keine funktionierende Lösung.

Vielen Dank
Christoph
  #2  
Alt 25.09.2007, 15:25
Benutzerbild von LonelyPixel
UNB-Entwickler
 
Registriert seit: 01.2004
Ort: Erlangen
Beiträge: 974
Backwards Assertions könnten dir hier helfen. Suche alle [:+], vor denen kein ? steht.

Kannst du grade mal den RegExp hinschreiben, den du bislang verwendet hast? Ich weiß grade nicht, was du genau vorhast, also was am Ende rausfallen soll. Dann bau ich dir diese Assertion mit ein.

__________________
Yves Goergen
Softwareentwicklung, Fotografie, Webhosting, UNB Components (in Arbeit)
  #3  
Alt 25.09.2007, 15:32
Programmierer
 
Registriert seit: 09.2007
Beiträge: 5
Hallo

Habe die Frage natürlich noch in andere Foren gepostet und am Anfang auch noch etwas genauer beschrieben. Hier also nochmal den Post in voller Länge...

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 Egebnis
...
Für einen Ansatz oder eine Erklärung wäre ich euch sehr dankbar.

Vielen Dank
Christoph

  #4  
Alt 25.09.2007, 15:49
Programmierer
 
Registriert seit: 09.2007
Beiträge: 5
Ich hoffe das erklärt das Problem. Bei Unklarheiten poste ich gerne weitere Informationen.

Es sollte noch erwähnt werden das die Kombination ?: bzw ?+ jederzeit auftauchen kann und nicht mit einem Trennzeichen : oder + verwechselt werden darf.

Christoph

  #5  
Alt 25.09.2007, 18:25
Webmaster / vb-g Team
 
Registriert seit: 11.2004
Ort: München
Beiträge: 114
Der Ausdruck Backward oder Lookbehind Assertation wurde ja schon genannt. Der Regex lautet dann: (?<!\?)[:+]

  #6  
Alt 26.09.2007, 00:05
Benutzerbild von LonelyPixel
UNB-Entwickler
 
Registriert seit: 01.2004
Ort: Erlangen
Beiträge: 974
Off-Topic:
Ha, Lookbehind war der korrekte Ausdruck, er fiel mir nicht ein…

__________________
Yves Goergen
Softwareentwicklung, Fotografie, Webhosting, UNB Components (in Arbeit)
  #7  
Alt 27.09.2007, 08:49
Programmierer
 
Registriert seit: 09.2007
Beiträge: 5
Wahnsinn, das klappt tatsächlich und ich hab auch noch ne grobe Vorstellung warum es klappt :-)

Spitze... Gut zu Wissen das es sowas gibt, hab schon an mir und RegEx gezweifelt.

VIELEN DANK
.
Christoph

  #8  
Alt 27.09.2007, 22:35
Webmaster / vb-g Team
 
Registriert seit: 11.2004
Ort: München
Beiträge: 114
Regenechsen :: Ideas come true | Reguläre Ausdrücke allg.

Kann ich nur empfehlen Und dann zum ausprobieren: The Regex Coach - interactive regular expressions

  #9  
Alt 28.09.2007, 14:51
Benutzerbild von LonelyPixel
UNB-Entwickler
 
Registriert seit: 01.2004
Ort: Erlangen
Beiträge: 974
Das hier ist auch ganz gut:
myCSharp.de - DIE C#- und .NET Community - | Projekte | On-the-fly Regex-Tester: Regex-Lab
On-the-fly Regex-Tester: Regex-Lab (aus dem myCSharp-Forum)

__________________
Yves Goergen
Softwareentwicklung, Fotografie, Webhosting, UNB Components (in Arbeit)
  #10  
Alt 01.10.2007, 15:45
Programmierer
 
Registriert seit: 09.2007
Beiträge: 5
Zitat:
Das hier ist auch ganz gut:
myCSharp.de - DIE C#- und .NET Community - | Projekte | On-the-fly Regex-Tester: Regex-Lab
On-the-fly Regex-Tester: Regex-Lab (aus dem myCSharp-Forum)
Stimmt das Tool ist sehr übersichtlich.

Vielen Dank nochmal

Antwort


Stichworte
-


Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
htaccess Problem mit Spidern - Hilfe Lyoid Suchmaschinenoptimierung (SEO) & -Marketing (SEM) 2 11.08.2007 23:48
Problem mit vB Popup Menü und "target" Fokker Programmierung und Datenbanken 5 23.08.2006 13:58
Problem mit SELECT MrNase Programmierung und Datenbanken 1 16.05.2006 16:26
Problem beim Ändern von Beiträgen ...?! Jan Stöver Informationen, Anregungen und Kritik 4 24.03.2005 15:15
Spezieller regulärer Ausdruck gesucht! Fabchan Programmierung und Datenbanken 7 01.11.2004 19:53






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25