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 / 4086 / 126 / 940 ) »
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 / 4086 / 126 / 940 ) »
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 / 4395 / 223 / 1182 ) »
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.
16157
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.
1375
Views
Im String mit Regex Zeichen ersetzen
von MarkusW » 20.08.2020 13:42 • Verfasst in ABAP® Core
2
Antw.
714
Views
Regex in FIND erste Zeichen prüfen.
von msfox » 02.10.2023 11:27 • Verfasst in ABAP® für Anfänger
1
Antw.
1303
Views
Drei ALVs auf einem Screen
von tomyboy » 04.05.2005 15:09 • Verfasst in ABAP® für Anfänger
3
Antw.
1837
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

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 498
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2139
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8735