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 / 4090 / 127 / 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 / 4090 / 127 / 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 / 4396 / 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.
16170
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.
1382
Views
Im String mit Regex Zeichen ersetzen
von MarkusW » 20.08.2020 13:42 • Verfasst in ABAP® Core
2
Antw.
721
Views
Regex in FIND erste Zeichen prüfen.
von msfox » 02.10.2023 11:27 • Verfasst in ABAP® für Anfänger
1
Antw.
1307
Views
Drei ALVs auf einem Screen
von tomyboy » 04.05.2005 15:09 • Verfasst in ABAP® für Anfänger
3
Antw.
1845
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

Dialog-Container mit Toolbar/Status
vor 12 Stunden von black_adept gelöst 23 / 3701
User Exit EXIT_RQCPRM10_001
vor 13 Stunden von a-dead-trousers 2 / 267
Trennen Strasse und Hausnummer
vor 18 Stunden von payten 13 / 10605
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1317

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

Dialog-Container mit Toolbar/Status
vor 12 Stunden von black_adept gelöst 23 / 3701
User Exit EXIT_RQCPRM10_001
vor 13 Stunden von a-dead-trousers 2 / 267
Trennen Strasse und Hausnummer
vor 18 Stunden von payten 13 / 10605
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1317

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2858
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9447