Code: Alles auswählen.
FIND REGEX '\d+\D*$' IN test MATCH OFFSET off.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
isp
Code: Alles auswählen.
FIND ALL OCCURRENCES OF REGEX '[\d\-\s]*([a-z\-\sA-Z])*$' IN l_string MATCH OFFSET l_off.
Code: Alles auswählen.
Hansstr.345
Josef Müller Schmid Str. 17a
Franz-Josef-Strauß-Str. 25 C
Straße des 17. Juni 55-56
Straße des 17. Juni 55 - 56
Straße des 17. Juni 55-56a-f
Straße des 17. Juni 55-56 a-f
Straße des 17. Juni 55 - 56 a-f
Straße des 17. Juni 55 -56 a-f
Straße des 17. Juni 55- 56 a -f
Code: Alles auswählen.
Josefstraße A123 4
Birkenstraße12 (bei Frisör Müllermeierschulz)
ewx hat geschrieben:Lusitg, dass man die gleichen Sachen manchmal zur gleichen Zeit benötigt...
Deswegen habe ich mal black_adepts Ausdruck erweitert:findet:Code: Alles auswählen.
FIND ALL OCCURRENCES OF REGEX '[\d\-\s]*([a-z\-\sA-Z])*$' IN l_string MATCH OFFSET l_off.
Was der RegEx nicht findet, istCode: Alles auswählen.
Hansstr.345 Josef Müller Schmid Str. 17a Franz-Josef-Strauß-Str. 25 C Straße des 17. Juni 55-56 Straße des 17. Juni 55 - 56 Straße des 17. Juni 55-56a-f Straße des 17. Juni 55-56 a-f Straße des 17. Juni 55 - 56 a-f Straße des 17. Juni 55 -56 a-f Straße des 17. Juni 55- 56 a -f
Aber ansonsten schon mal ziemlich gut... :-]Code: Alles auswählen.
Josefstraße A123 4 Birkenstraße12 (bei Frisör Müllermeierschulz)
Man muss allerdings einen STRING verwenden, ansonsten funktioniert der $-Ausdruck nicht (Ende einer Zeile/ String).
Getestet mit DEMO_REGEX_TOY
Folgende Benutzer bedankten sich beim Autor schubepe für den Beitrag (Insgesamt 3):
ewx • ralf.wenzel • ChrisB
Code: Alles auswählen.
DATA:
lv_input TYPE string,
lv_street TYPE string,
lv_house_number TYPE string,
lo_regex TYPE REF TO cl_abap_regex,
lo_matcher TYPE REF TO cl_abap_matcher.
PARAMETERS: p_street TYPE string.
lv_input = p_street. "'Straße des 17. Juni 55 - 56'. "'Musterstraße 42'. "'Straße des 18 Oktober 5A'.
" Instanz der Regex erstellen "
CREATE OBJECT lo_regex
EXPORTING
pattern = '(.*\D)\s(\d+[ -]*\d*[A-Za-z]?)$' "'(.*\D)\s(\d+[A-Za-z]?)$'
ignore_case = abap_true.
" Matcher erstellen "
lo_matcher = lo_regex->create_matcher( text = lv_input ).
IF lo_matcher->match( ).
lv_street = lo_matcher->get_submatch( 1 ). " Erster Teil: Straße "
lv_house_number = lo_matcher->get_submatch( 2 ). " Zweiter Teil: Hausnummer "
ENDIF.
" Ergebnisse anzeigen "
WRITE: / 'Straße:', lv_street,
/ 'Hausnummer:', lv_house_number.