Regulär Expression Stringsuche inkl. Sonderzeichen

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

Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von VB2012 (ForumUser / 6 / 0 / 0 ) »
Hallo,
In einer Tabelle befinden sich mehrere Textzeilen.
Diese Tabelle muss mit einem String verglichen werden.

Z.b. Soll folgender Text gefunden werden:
*---- dies ist der ganze Text ---*
Wichtig hierbei ist, dass der Text Sonderzeichen enthalten kann. Ich suche NICHT nur die Alphazeichen sondern den gesamten Text.

Mit Find regu... Komme ich nicht weiter. Mir fehlt die Syntax:(
Bitte um Unterstützung - mit detailierter Angabe des Find-Statements
Danke!

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


Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Warum nimmst du nicht den Standardstringvergleich von ABAP:

Code: Alles auswählen.

IF textzeile CS suchstring. 
Sy-subrc und Sy-fdpos liefern dir dann die gewünschten Informationen.
Alternativ mit FIND in der einfachen Version (also ohne REGEX ).
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Hier noch ein Hinweis (unabhängig von Regex oder nicht).
Es gibt auch die Anweisung FIND IN TABLE.
Vielleicht hilft das auch.

Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von VB2012 (ForumUser / 6 / 0 / 0 ) »
If ..CS..
ich müsste einen Loop über die Tabelle machen. Performance ist schlecht, wenn es mehrere Tausende von Zeilen sind.

Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
hi!

Das ganze ohne Regex:

Code: Alles auswählen.

FIND ALL OCCURRENCES OF '*---- dies ist der ganze Text ---*' IN TABLE lt_text RESULTS lt_result.
Das ganze mit Regex:
(Wobei ich davon ausgehe, dass du Strings in der Form '*---- <irgendwas> ---*' suchst)

Code: Alles auswählen.

FIND ALL OCCURRENCES OF REGEX '\*---- ([^-]*) ---\*' IN TABLE lt_text RESULTS lt_result.
Wie lt_result ausschaut findest du über die Hilfe.
[^-]* = Suche nach NICHT Bindestrich beliebig oft
Der Text selbst darf KEINE Bindestriche enthalten.
Mit dieser Regex hast du übrigens aufgrund der runden Klammern den Text der zwischen den Bindestrichen steht im ersten Submatch.
Die Zeilen von LT_TEXT müssen flach und CLIKE sein, damit das funktioniert. Nur String funktioniert auch.

lg ADT

EDIT: Regex ohne diese ... Syntax-Hervorhebung: '\*---- ([^-]*) ---\*'
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: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von VB2012 (ForumUser / 6 / 0 / 0 ) »
Erstmal Danke.
Der FIND ohne Regex findet auch einen Text, der länger ist und das Suchpattern beinhaltet.
Deshalb meine Frage nach Regex.

Deinen Vorschlag mit Regex probiere ich aus.
Danke

Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von VB2012 (ForumUser / 6 / 0 / 0 ) »
Zusatz:
der Text ist NICHT in nur Alpha Zeichen, er enthält auch Sonerzeichen. Wie oben im Beispiel. Der genau gesamte Text muss gefunden werden. Nicht ein Ausschnitt innerhalb des Beispiels.
Auch darf dieser Text nicht einen Teilkomponente / Teilstring eines anderen Textes sein:
Beispiel:
es soll gefunden werden: '*--- der text ----*' = Suchstring
es darf NICHT als Teffer kommen: '*--- der text ----* und mehr'

Der Suchstring kann völlig variieren. Mal mit Sonderzeichen mal ohne, oder nur ein Wort. Oder ein Wort mit Unterstrich oder Bindestrich

Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
ich versteh dich jetzt nicht ganz.
Sowohl bei FIND mit REGEX als auch ohne werden immer nur die Fundstelle des Textes gefunden und nicht mehr.
Eine Fundstelle wird durch LINE (bei Tabellen), OFFSET und LENGTH(!!!) spezifiziert.
Sprich eine Suche nach

Code: Alles auswählen.

'*--- der text ----*'
im Text

Code: Alles auswählen.

'lalala *--- der text ----* und mehr'
liefert LINE 1 OFFSET 7 LENGTH 19

Umgelegt auf die weitere Verarbeitung entspricht dies

Code: Alles auswählen.

LD_TEXT+OFFSET(LENGTH) = LD_TEXT+7(19) = '*--- der text ----*'
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: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Ich glaube ein paar weitere Beispiele wären nicht schlecht.

Wenn du genau den Suchstring suchst, dann kannst du doch auch mit = suchen.

Es wäre auch interessant zu wissen, wo die Suchstrings herkommen. Werden die von einem Benutzer eingegeben oder kommen Sie aus einer Tabelle oder Datei oder werden Sie per Programm generiert.

Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
...und sind sie evtl. Zeilen übergreifend...?

Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von VB2012 (ForumUser / 6 / 0 / 0 ) »
Dein Beispiel ist richtig. Aber ich wollte, das der Find mir nicht ein Result liefert, das ich noch weiter überprüfen muss, ob die Zeile genau dem Suchstring entspricht.
Durch Offset und Length weiss ich, dass die gefundene Line meinen Suchtext enthält. Aber ich weiss noch nicht ob der Suchtext genau der Fundstelle entspricht.
Das wollte ich elegant mit einem Befehl erschlagen.
Jetzige Lösung ist dann wohl, dass ich die Result-Tab überprüfen muss mit den genauen Längen- und Offset- Angaben. Hier würde dann auch ein If..CS.. helfen.

Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von VB2012 (ForumUser / 6 / 0 / 0 ) »
Dele hat geschrieben:Ich glaube ein paar weitere Beispiele wären nicht schlecht.

Wenn du genau den Suchstring suchst, dann kannst du doch auch mit = suchen.

Es wäre auch interessant zu wissen, wo die Suchstrings herkommen. Werden die von einem Benutzer eingegeben oder kommen Sie aus einer Tabelle oder Datei oder werden Sie per Programm generiert.
...
Im Prinzip werden 2 Quellen mit einander verglichen. Die Idee ist, dass Unterschiede erkannt werden sollen.
Eine andere Anwendung im gleichen Verfahren ist, dass in einer Quelle gesucht werden soll. Der Anwender sucht nach einer Begrifflichkeit, die wiederum ein Text, ein Wort sein kann

Ähnlich wie im ABAP-Editor unter suchen, hier werden auch Treffer angezeigt, in denen der Suchstring enthalten ist, dass ist nicht die Lösung.
Gebe ich ihn an in Hochkomma z.B.: ' text', dann wird genau der Text nach Gleichheit untersucht.

Re: Regulär Expression Stringsuche inkl. Sonderzeichen

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Ich vestehe das ganze nicht. Mach doch einfach mal ein paar Beispiele:
Ein paar Zeilen des Tabelleninhaltes und ein paar positive und negative Suchstrings.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1077
Views
Regular Expression ?
von HStev » 12.04.2005 08:47 • Verfasst in ABAP® Core
0
Antw.
1646
Views
CATS regular im Systemverbund
von OnkelSAP » 01.08.2013 10:17 • Verfasst in Financials
5
Antw.
1811
Views
Logical expression IN
von hbahnen » 03.05.2006 00:39 • Verfasst in ABAP® Core
1
Antw.
6128
Views
CDS View, Problem mit Case expression
von RaCDigger » 02.02.2017 15:36 • Verfasst in ABAP® Core
0
Antw.
1184
Views
PSP *inkl. Planung* kopieren?
von Gast » 05.12.2005 10:21 • Verfasst in SAP - Allgemeines

Aktuelle Forenbeiträge

Regex in where
vor 10 Stunden von tar 8 / 250
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1539
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 186
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 425

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 10 Stunden von tar 8 / 250
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1539
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 186
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 425

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 132
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3309
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9863