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 / 226 / 39 / 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 / 4155 / 134 / 958 ) »
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 / 226 / 39 / 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 / 4155 / 134 / 958 ) »
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 / 4477 / 229 / 1203 ) »
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 / 226 / 39 / 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.
17951
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.
4371
Views
Im String mit Regex Zeichen ersetzen
von MarkusW » 20.08.2020 13:42 • Verfasst in ABAP® Core
2
Antw.
3456
Views
Regex in FIND erste Zeichen prüfen.
von msfox » 02.10.2023 11:27 • Verfasst in ABAP® für Anfänger
3
Antw.
2695
Views
CSV-Daten aus drei Quellen matchen mit Stuktur
von manuelschütz » 03.05.2007 17:54 • Verfasst in ABAP® Core
2
Antw.
3579
Views
Gleiche Zeilen zusammenfassen
von EnginT » 22.12.2020 14:59 • 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

Zukunft des ABAP Entwicklers
vor 2 Tagen von ewx 9 / 706
Prüfzeugnisse Anlagen finden
vor 2 Tagen von ewx gelöst 2 / 238
Spool vereinen OTF und PDF
vor 5 Tagen von anna2205 1 / 191
HR in der Zukunft?
vor einer Woche von waltersen 5 / 2669

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

Zukunft des ABAP Entwicklers
vor 2 Tagen von ewx 9 / 706
Prüfzeugnisse Anlagen finden
vor 2 Tagen von ewx gelöst 2 / 238
Spool vereinen OTF und PDF
vor 5 Tagen von anna2205 1 / 191
HR in der Zukunft?
vor einer Woche von waltersen 5 / 2669

Unbeantwortete Forenbeiträge

Spool vereinen OTF und PDF
vor 5 Tagen von anna2205 1 / 191
XSLT und Loipro05 Transformation
letzen Monat von Torsten1965 1 / 6358
VOLL Artikel in einem Display Typ 12
November 2025 von ThomasM84 1 / 24107