Regex für /xA0

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Regex für /xA0

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo,
bei uns kommen Werte mit abschließenden &nbsp& an - Bsp:
M-1312183-A 
Hex: 4D2D313331323138332D41A0202020202020202020202020

Wie kann ich das '/xA0' durch ein einfaches Space ersetzen.
REPLACE ALL OCCURRENCES of REGEX `\xA0` IN lv_test WITH space.
funktioniert nicht.

Was funktioniert ist:
REPLACE ALL OCCURRENCES of ' ' IN lv_test WITH space.
Aber nur, wenn man zwischen die Anführungszeichen mit Alt+0160 das Leerzeichen eingibt.
Dies ist aber für niemanden nachvollziehbar/erkenntlich.

Gibt es irgendwo eine entsprechende Konstante?

MfG
Thomas R.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Regex für /xA0

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
\x scheint im ABAP-RegEx-Prozessor nicht unterstützt zu sein.
(Siehe Hilfe "Sonderzeichen in regulären Ausdrücken")

Du könntest entweder über "casting" oder über die Konverter-Klasse ein "Sonderzeichen" erstellen:

Code: Alles auswählen.

DATA ld_char TYPE char01.
FIELD-SYMBOLS <la_char> TYPE any.

ASSIGN ld_char TO <la_char> CASTING TYPE x.
<la_char> = 'A0'.
* oder --------------------------------------
DATA lr_convert TYPE ref to cl_abap_conv_in_ce.

lr_convert = cl_abap_conv_in_ce=>create( ).
lr_convert->convert( EXPORTING input = 'A0'
                     IMPORTING data  = ld_char ).
In LD_CHAR steht dann das Zeichen, das du für die Suche benutzen kannst.

Eine bereits vorhandene Constante für den "nbsp" bzw. #A0 ist mir bislang leider noch nicht untergekommen.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Thomas R.

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Regex für /xA0

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Hallo Thomas,

soweit ich mich entsinne findet "\s" alle Leerzeichen - auch Whitespaces.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Regex für /xA0

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo Stefan,
\s findet die geschützten Leerzeichen leider nicht, das wäre das bequemste gewesen...

MfG
Thomas R.

Re: Regex für /xA0

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Doch - habe es gerade noch mal ausprobiert

Code: Alles auswählen.

REPORT LINE-SIZE 1000.

data: s type text20 value 'M-1312183-A '.  "<--  da ist ein whitespace hinter dem -A

replace all OCCURRENCES OF REGEX '\s' in s with 'x'.
write s.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Regex für /xA0

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo Stefan,
jetzt machst Du mich platt.
Genau das habe ich getestet und es funktioniert nicht bei mir.

S wird dabei (per ALT+160) auf folgenden Hexwert gebracht:
4D2D313331323138332D41A02020202020202020

Replace ersetzt dann nur die "normalen" Leerzeichen (x20) zu.
4D2D313331323138332D41A07878787878787878

Nun kann es noch an der SAP-Version liegen:
SAP_BASIS 701 0013 SAPKB70113
SAP_ABA 701 0013 SAPKA70113

MfG
Thomas R.

Re: Regex für /xA0

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Ich habe das mal vor Jahren verwendet bei einer Datenübernahme - daher bin ich recht sicher dass es mit 7.00 und einem recht kleinen Patchstand ging.
Auf folgenden ( alles non-unicode ) Systemen habe ich das gerade noch mal ausprobiert und mein Demoprogramm läuft auf beiden genau so wie es soll.

1. System 7.00
SAP_BASIS 700 0028 SAPKB70028 SAP Basis Component
SAP_ABA 700 0028 SAPKA70028 Cross-Application Component


2. System 7.31
SAP_BASIS 731 0005 SAPKB73105 SAP Basiskomponente
SAP_ABA 731 0005 SAPKA73105 Anwendungsübergreifende Komponente

( alle Systeme laufen unter OS Windows NT )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Regex für /xA0

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo Stefan,
unsere Systeme laufen unter Linux.
Die Ergebnisse im vorigen Beitrag sind die Daten aus Deinem Testprogramm.
So kann es eigentlich nur noch an der Umgebung liegen - Du hast ja geprüft ob ein geschütztes Leerzeichen (Hex A0) in s steht.

Danke für Deine Mühe!

MfG
Thomas R.

Re: Regex für /xA0

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Ist jetzt schon spät und ich mag mich grad nicht mehr bei einem Kunden einloggen. Aber es gibt auch einen Control-Code, der alle nicht druckbaren Zeichen entfernt. Oder du entfernst alles außer [a-z,A-Z,0-9, ein paar Sonderzeichen ]
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Regex für /xA0

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo Stefan,
falls Du mal Zeit hast könntest Du bitte der Vollständigkeit halber (und weil ich es brauchen könnte ;-) ) diesen Control-Code dokumentieren. Ich finde ihn leider nicht.

Danke!

MfG
Thomas R.

Re: Regex für /xA0

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Der steht normalerweise in der Hilfe zu "reguläre Ausdrücke" Abschnitt "Sonderzeichen". Irgendwas mit "[ [:blabla:] ]".
(Hab leider grad keine Hilfe zur Hand)

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Regex für /xA0

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Hi Thomas,

schau mal das folgende Coding an. Irgendwas davon ( oder eine Kombination) ist für die meisten Fälle ausreichend. ( ohne Code-Block, da sonst die ganzen eckigen Klammern ersetzt werden )


REPORT.


DATA: teststring TYPE string.

CONCATENATE 'CR:LF' cl_abap_char_utilities=>cr_lf
'Newline' cl_abap_char_utilities=>newline
'FormFeed' cl_abap_char_utilities=>form_feed
'Backspace' cl_abap_char_utilities=>backspace
'HorizTab' cl_abap_char_utilities=>horizontal_tab
'Whitespace '
'Space '
'Ende'
INTO teststring RESPECTING BLANKS.

WRITE:/ teststring.

REPLACE ALL OCCURRENCES OF REGEX '[^[:print:]]' IN teststring WITH ``. " Alle nichtanzeigbaren Zeichen raus
*replace all OCCURRENCES OF REGEX '[ [:space:] ]' in teststring with ``. " Alle Leerzeichen, Tabs, LF etc raus
*replace all OCCURRENCES OF REGEX '[^\w [:punct:]]' in teststring with ``. " Alles bis auf Alphanum oder (echtes) Leerzeichen raus
WRITE:/ teststring.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Regex für /xA0

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Vielen Dank an alle,
bei unserem System fallen die blöden Non-Breakable-SPaces leider nicht unter die nichtdruckbaren Zeichen und brauchen also somit die Sonderbehandlung wie im Anfangspost erwähnt.
Trotzdem sind die Controls für andere Zwecke sehr nützlich.

Viele Grüße
Thomas R.

Seite 1 von 1

Vergleichbare Themen

6
Antw.
167
Views
Regex in where
von edwin » 28.11.2024 23:13 • Verfasst in ABAP® Core
13
Antw.
6224
Views
REGEX - CX_SY_INVALID_REGEX
von nickname8 » 23.04.2018 13:49 • Verfasst in ABAP® Core
17
Antw.
4369
Views
Regex in FIND
von hugo.data » 22.10.2018 15:33 • Verfasst in ABAP® für Anfänger
2
Antw.
2301
Views
Suchmuster mit Regex
von crishi_crd » 15.05.2014 08:19 • Verfasst in ABAP® für Anfänger
1
Antw.
2200
Views
XML Parser mit REGEX
von Adrian » 27.12.2013 09:23 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 40 Minuten von tar 8 / 174
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1488

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 40 Minuten von tar 8 / 174
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1488

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822