Ansicht
Dokumentation
ABAPFIND_PATTERN - FIND PATTERN
Vendor Master (General Section) BAL_S_LOG - Application Log: Log header dataDiese Dokumentation steht unter dem Copyright der SAP AG.
FIND, pattern
... ${$[SUBSTRING$] substring$} $| ${PCRE pcre$}$|${REGEX regex_ref$} ... .
Varianten:
1. ... $[SUBSTRING$] substring.
2. ... ${PCRE pcre$}$|${REGEX regex_ref$}
Wirkung
Definition eines Suchmusters für die Anweisungen FIND
und FIND IN TABLE. Es kann entweder
exakt nach einer Unterfolge substring oder nach einer Unterfolge, die zu einem regulären Ausdruck hinter PCRE oder REGEX passt, gesucht werden.
Hinweis
Die Anweisungen REPLACE und REPLACE IN TABLE verwenden das gleiche Suchmuster.
Variante 1
... $[SUBSTRING$] substring.
Wirkung
In dieser Variante wird nach dem exakten Vorkommen einer in einem zeichen- bzw. byteartigen Operanden substring angegebenen Unterfolge gesucht. Bei substring handelt es sich um eine
zeichenartige
Ausdrucksposition Die Angabe des Wortes SUBSTRING dient der Verdeutlichung und ist optional.
Wenn substring entweder ein leerer String ist oder vom Typ c, n, d oder
t und nur Leerzeichen enthält, wird eine leere Unterfolge gesucht. Dies ist nur beim Suchen
nach dem ersten Vorkommen möglich und die leere Unterfolge wird immer vor dem ersten Zeichen
bzw. Byte gefunden. Bei der Zeichenkettenverarbeitung werden bei Datenobjekten substring fester Länge die schließenden Leerzeichen nicht berücksichtigt.
Hinweis
Sollen schließende Leerzeichen in der Unterfolge berücksichtigt werden, muss substring vom Datentyp string sein.
Beispiel
Suche sämtlicher Vorkommen der Folge "now" in einem Textstringliteral. Die Offsets 11 und 24 der beiden Fundstellen werden ausgegeben.
Beispiel
Suche sämtlicher Vorkommen der Folge "now" in einem Textstringliteral mit Hilfe einer WHILE-Schleife.
Nach jeder erfolgreichen Suche wird der Suchbereich neu hinter der Fundstelle definiert. Auf diese Art
konnten auch vor Einführung des Zusatzes ALL OCCURRENCES alle Vorkommen des Suchmusters gefunden werden.
Variante 2
... ${PCRE pcre$}$|${REGEX regex_ref$}
Wirkung
In dieser Variante wird nach einer Übereinstimmung mit einem in pcre oder regex_ref angegebenen regulären Ausdruck gesucht.
- Mit dem Zusatz PCRE kann für pcre ein zeichenartiger Operand verwendet werden, der einen gültigen regulären POSIX-Ausdruck enthält. Die PCRE-Syntax wird in einem erweiterten Modus kompiliert: Die meisten nicht maskierten Leerräume (Leerzeichen und Zeilenumbrüche) im Muster werden außerhalb von Zeichenklassen ignoriert und Kommentare können hinter # angegeben werden. Bevor Leerräume und # in einem Muster angegeben werden können, müssen sie maskiert werden oder der erweiterte Modus muss im regulären Ausdruck durch (?-x) ausgeschaltet werden.
- Bei Verwendung des Zusatzes REGEX kann eine Objektreferenzvariable regex_ref angegeben werden, die auf eine Instanz der Systemklasse CL_ABAP_REGEX zeigt, die einen regulären Ausdruck in einer gültigen von ABAP unterstützten Syntax für reguläre Ausdrücke darstellt.
pcre ist eine zeichenartige Ausdrucksposition.
Bei der Suche mit einem regulären Ausdruck können spezielle Suchmuster angegeben werden, die u.a. Vorausschau-Bedingungen erlauben.
Eine leere Zeichenfolge in pcre ist kein gültiger regulärer Ausdruck und führt
zu einer Ausnahme. Eine leere Zeichenfolge liegt vor, wenn pcre entweder ein leerer String ist oder vom Typ c, n, d oder t und nur Leerzeichen enthält.
Hinweise
- Instanzen von CL_ABAP_REGEX für alle Arten von regulären Ausdrücken, PCRE, XPath, XSD, und POSIX (obsolet) können mit dem Zusatz REGEX verwendet werden. Hier wird die Einschränkung umgangen, wobei reguläre Ausdrücke im XPath- und XSD-Syntax nicht direkt als Zeichenketten angegeben werden können.
- Bei Verwendung von CL_ABAP_REGEX kann der erweiterte Modus über einen Parameter für reguläre PCRE- und XPath-Ausdrücke geschaltet werden.
- Es gibt nicht-leere reguläre Ausdrücke wie a*, mit denen nach leeren Zeichenfolgen gesucht wird. Dies ist bei der Suche nach dem ersten und nach allen Vorkommen möglich. Die entsprechenden leeren Unterfolgen werden vor dem ersten Zeichen, zwischen allen Zeichen und hinter dem letzten Zeichen des Suchbereichs gefunden. Eine solche Suche ist immer erfolgreich.
- Ein regulärer Ausdruck kann zwar syntaktisch korrekt, aber zu komplex für die Ausführung der Anweisung FIND sein, was zu einer behandelbaren Ausnahme der Klasse CX_SY_REGEX_TOO_COMPLEX führt. Siehe Ausnahmen in regulären Ausdrücken.
- Hinter REGEX kann auch ein zeichenartiger Operand posix angegeben werden, die einen gültigen
regulären POSIX-Ausdruck enthält. Diese Variante ist obsolet.
Beispiel
Die Suche verwendet die Syntax des regulären PCRE-Ausdrucks und findet 'ab' ab dem Offset 3.
BAL_S_LOG - Application Log: Log header data Addresses (Business Address Services)
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 8209 Date: 20240420 Time: 044320 sap01-206 ( 116 ms )