Hallo Forumsmitglieder!
seit ein paar Tagen beschäftigt mich ein Problem mit den regular expression und ich komme nicht voran. Vielleicht kann mir hier jemand auf die Sprünge helfen.
Zum Problem:
Die Datensätze sind alle gleich aufgebaut.
Ein Beispiel:
Text1 Zahl1[A-Z] - {12345} Text2_Zusatz1_Zusatz2
Der Zahl1 können Buchstaben folgen, aber nicht zwangsläufig, insofern macht es Sinn, bis zum ' - ' abzufragen. Dies ginge im Grunde auch (s.u.), die 5stellige Zahl herauszufiltern und von deren Position immer 3 abzuziehen, dann bin ich auch am Ende von Zahl1 unabhängig, ob ein Buchstabe folgt oder nicht.
Den Text1 separiere ich mit:
Die -1 killt quasi das Blank am Ende vor der Zahl1.
Bei der Zahl1 wird es nun problematisch:
Der erste Teil startet da, wo der Text1 aufhörte und der zweite Parameter holt sich die Position der immer 5stelligen Zahl.
Als Ergebnis erhalte ich aber nach obigem Datensatzbeispiel: 'Zahl1 - 12345 AD',
während ein
die 5stellige Zahl korrekt liefert.
Wie ich dann noch den _ abfrage, weil die ja wohl nur über '\_' und escape '\' möglich sein werden und das dann in die regexp einbaue, habe ich noch gar nicht probiert
Bin für alle Lösungsansätze dankbar.
Grüße,
Stephan
PS: sorry für die zurückliegende Unübersichtlichkeit, hatte die code-tags nicht benutzt...
seit ein paar Tagen beschäftigt mich ein Problem mit den regular expression und ich komme nicht voran. Vielleicht kann mir hier jemand auf die Sprünge helfen.
Zum Problem:
Die Datensätze sind alle gleich aufgebaut.
Ein Beispiel:
Text1 Zahl1[A-Z] - {12345} Text2_Zusatz1_Zusatz2
Der Zahl1 können Buchstaben folgen, aber nicht zwangsläufig, insofern macht es Sinn, bis zum ' - ' abzufragen. Dies ginge im Grunde auch (s.u.), die 5stellige Zahl herauszufiltern und von deren Position immer 3 abzuziehen, dann bin ich auch am Ende von Zahl1 unabhängig, ob ein Buchstabe folgt oder nicht.
Den Text1 separiere ich mit:
Code:
select substr(text,1,regexp_instr(text,' [0-9]')-1)),
Die -1 killt quasi das Blank am Ende vor der Zahl1.
Bei der Zahl1 wird es nun problematisch:
Code:
substr(text,regexp_instr(text,' [0-9]'),regexp_instr(text,' [0-9]{5}')-3)
Der erste Teil startet da, wo der Text1 aufhörte und der zweite Parameter holt sich die Position der immer 5stelligen Zahl.
Als Ergebnis erhalte ich aber nach obigem Datensatzbeispiel: 'Zahl1 - 12345 AD',
während ein
Code:
substr(text,regexp_instr(text, '[0-9]{5}'),5)
die 5stellige Zahl korrekt liefert.
Wie ich dann noch den _ abfrage, weil die ja wohl nur über '\_' und escape '\' möglich sein werden und das dann in die regexp einbaue, habe ich noch gar nicht probiert
Bin für alle Lösungsansätze dankbar.
Grüße,
Stephan
PS: sorry für die zurückliegende Unübersichtlichkeit, hatte die code-tags nicht benutzt...

Zuletzt bearbeitet: