Regex: Drei gleiche Zeichen/Digits am Zeilenanfang

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

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Regex: Drei gleiche Zeichen/Digits am Zeilenanfang

Beitrag von sapdepp (Specialist / 218 / 37 / 2 ) »
Hallo zusammen,

gibt es einen eleganten Regex, der mir mind. drei gleiche alphanumerische Zeichen (Unterscheidung groß und klein) am Zeilenanfang liefert? Das hier tut's auch (gekürzt), ist aber, wenn man alle Möglichkeiten einschließt, viel zu lang. Gefunden werden soll z. B. 111 in 11112024Abc! oder XXX in XXXX2024Abc!, aber nichts in 20241111Abc! bzw. XX2024xxxxAbc!

Code: Alles auswählen.

^(000|111|222|aaa|AAA|bbb|BBB|ccc|CCC){1,}
Das hier klappt leider nicht:

Code: Alles auswählen.

^[000-999aaa-zzzAAA-ZZZ]{1,}

Code: Alles auswählen.

^\w{3,}
Besten Dank.

LG
sapdepp

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


Re: Regex: Drei gleiche Zeichen/Digits am Zeilenanfang

Beitrag von black_adept (Top Expert / 4059 / 118 / 929 ) »
Da in ABAP mit ( ) registrierte Untergruppen nur in Ersetzungsmustern akzeptiert werden, geht das leider nicht.
Aber du kannst das alternativ ohne Regex schnell hinbekommen.

Code: Alles auswählen.

data start(3) type c.
start = text.
if start+0(1) = start+1(1) and start+0(1) = start+2(1).
Zeilenanfang hat 3 gleiche Zeichen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Regex: Drei gleiche Zeichen/Digits am Zeilenanfang

Beitrag von sapdepp (Specialist / 218 / 37 / 2 ) »
Da in ABAP mit ( ) registrierte Untergruppen nur in Ersetzungsmustern akzeptiert werden
Würde bedeuten, ABAP findet per FIND keine mit ( ) registrierte Untergruppen, könnte aber mit Replace solche Untergruppen ersetzen? Kurios.

if start+0(1) = start+1(1) and start+0(1) = start+2(1).
Okay, fast schon zu einfach, aber geht. ;)

Besten Dank!

sapdepp

Re: Regex: Drei gleiche Zeichen/Digits am Zeilenanfang

Beitrag von black_adept (Top Expert / 4059 / 118 / 929 ) »
sapdepp hat geschrieben:
14.10.2024 11:21
Da in ABAP mit ( ) registrierte Untergruppen nur in Ersetzungsmustern akzeptiert werden
Würde bedeuten, ABAP findet per FIND keine mit ( ) registrierte Untergruppen, könnte aber mit Replace solche Untergruppen ersetzen? Kurios.
Nein - das heißt es nicht. Mit ( ) kann man Untergruppen registrieren und in Ersetzungmustern ansprechen. Wenn Untergruppen in Suchmustern akzeptiert würden könnte man falls ( ) die 1. Untergruppe ist, mit ^(.)$1{2} ( Untergruppe trifft das 1. Auftreten, $1{2} dann die beiden weiteren, wobei auf die Untergruppe referenziert wird ) oder so ähnlich weitermachen

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
sapdepp

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Regex: Drei gleiche Zeichen/Digits am Zeilenanfang

Beitrag von a-dead-trousers (Top Expert / 4370 / 222 / 1174 ) »
Das mit den Untergruppen geht übrigens doch:

Code: Alles auswählen.

DATA:
  lt_result TYPE match_result_tab,
  ld_string TYPE string VALUE 'aaabbcc'.

FIND REGEX '([a-z\d])\1\1' IN ld_string RESULTS lt_result.
Habs grad herausgefunden als ich einen generellen Ansatz für das Thema interessehalber im Netz gesucht hab.
https://stackoverflow.com/questions/888 ... s-and-cons

EDIT: Steht übrigens auch in der ABAP Hilfe 😅
https://help.sap.com/doc/abapdocu_750_i ... SPECIALS_3
("Platzhalter für die Register von Untergruppen")

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag (Insgesamt 2):
black_adeptsapdepp

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: Drei gleiche Zeichen/Digits am Zeilenanfang

Beitrag von sapdepp (Specialist / 218 / 37 / 2 ) »
Sehr schön. Das klappt auch. In meinem Fall muss ich nur noch das ^-Zeichen vorne ran setzen und die Wertemenge A-Z einschließen. Also so hier:

Code: Alles auswählen.

^([a-zA-Z\d])\1\1

Seite 1 von 1

Vergleichbare Themen

2
Antw.
16087
Views
String die ersten drei Zeichen prüfen
von Marc K. » 02.04.2012 14:19 • Verfasst in ABAP® für Anfänger
9
Antw.
1354
Views
Im String mit Regex Zeichen ersetzen
von MarkusW » 20.08.2020 13:42 • Verfasst in ABAP® Core
2
Antw.
699
Views
Regex in FIND erste Zeichen prüfen.
von msfox » 02.10.2023 11:27 • Verfasst in ABAP® für Anfänger
1
Antw.
1301
Views
Drei ALVs auf einem Screen
von tomyboy » 04.05.2005 15:09 • Verfasst in ABAP® für Anfänger
3
Antw.
1834
Views
CSV-Daten aus drei Quellen matchen mit Stuktur
von manuelschütz » 03.05.2007 17:54 • Verfasst in ABAP® Core

Ü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

Übertragen MINNISTAMM
vor einer Stunde von tar 3 / 172
corresponding - mapping - switch
vor 4 Stunden von tar 34 / 1083
Exception statt sy-subrc
vor 7 Stunden von DeathAndPain 17 / 817
Neue Themen als SAP Entwickler
Gestern von tar 156 / 23909

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

Übertragen MINNISTAMM
vor einer Stunde von tar 3 / 172
corresponding - mapping - switch
vor 4 Stunden von tar 34 / 1083
Exception statt sy-subrc
vor 7 Stunden von DeathAndPain 17 / 817
Neue Themen als SAP Entwickler
Gestern von tar 156 / 23909

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 2 Tagen von ralf.wenzel 1 / 390
EPC QR Code in Smartforms ohne CF_LF
vor einer Woche von Thomas J. 1 / 1576
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 7123