Regex mit UND-Verknüpfung

SimProtect

Aktives Mitglied
Hallo Leute,

Mein Team arbeitet derzeit an einem Problem, bei welchem es um ein - gefühlt - uraltes Nachrichtenschema geht, das baumartig aufgebaut ist. Hierbei verfügen jeweils die letzten Knoten (diejenigen also, die keiner Kindknoten mehr haben) über reguläre Ausdrücke, die für eben diesen Knoten gelten - jene letzte Knoten repräsentieren im wesentlichen bestimmte Aspekte einer Nachricht (z.B. Vorname, Nachname oder Straßenname).
Verschiedene Aspekte können in einem übergeordenten Datentyp zusammengefasst sein (einfaches Beispiel anhand einer Adresse: Sie besteht aus den Einzelaspekten Straßenname, Hausnummer, PLZ, Stadt).

Auf bestimmten Gründen - auf die ich jedoch hier nicht näher eingehen möchte und auf weder mein Team, noch ich Einfluss haben - muss es nun im übergeordneten Datentyp einen zusammengefassten Regex aus den regulären Ausdrücken aller Unteraspekte geben.
Auch das schief auf den ersten Blick sehr einfach: Wir haben uns alle regulären Ausdrücke der Aspekte geben lassen und diese gruppiert aneinander gereiht. Funktionierte in den ersten Tests super!

Nun stehen wir aber vor dem Problem, dass die Einzelaspekte teilweise über MEHRERE reguläre Ausdrücke verfügen, die BEIDE erfüllt sein müssen (diejenigen, die uns die Schemadateien geschrieben haben, sind vermutlich durch die Anforderungen für das jeweilige Elemente gegangen und haben für jede Anforderung einen Regex erstellt - wie gesagt: wir haben keinen Einfluss darauf und können am Schema nichts ändern. Ebenso sind uns Teile der technischen Umsetzung vorgegeben). Teilweise widersprechen sich diese Ausdrücke auch in einigen Teilen recht Stark (beispiel: Der erste Regex sagt, es darf sich um eine genau dreistellige Zahl handeln und es darf optional ein Minuszeichen vorkommen - der zweite Regex sagt: Es dürfen beliebig viele Ziffern vorkommen, aber kein Vorzeichen)

Nun wissen wir, dass das keine herkömliche Und-Verknüpfung in regulären Ausdrücken gibt. Dennoch müssen wir im übergeordneten Element aus allen regulären Ausdrücken einen einzigen Regex erstellen.
Momentan sehen unsere kombinierten Regexe noch so aus (als wir davon ausgegangen waren, es gäbe lediglich einen pro Aspekt): "(?<Groupname1> Regex1)(?<Groupname2> Regex2) [...]"

Fällt hier jemandem eine Lösung ein, mit der sich zwei reguläre Ausdrücke (z.B. für die Gruppe 1) quasi als UND verknüpfen lassen?

Unsere Alternativlösung wäre den Regex quasi im Hintergrund durch eine eigene Implementierung der geforderten Logik zu ersetzen und nur nach Außen hin weiter mit der Regexlogik zu arbeiten. Jedoch wäre das ein bedeutend größerer Aufwand, der auch mehr Zeit verschlingen würde, als uns im aktuellen Sprint zugesprochen wurde.

Beste Grüße
Der SimProtect
 
K

kneitzel

Gast
Also bei regulären Ausdrücken gibt es keine UND Verknüpfung. Das einzige, das mir hier einfallen würde, wäre die Erstellung eines Ausdrucks aus den zwei Ausdrücken, in dem dann das Resultat aus den zwei Ausdrücken steckt.

Das mag für einfache reguläre Ausdrücke einfach sein, aber bei einer hohen Komplexität kann es durchaus schwer bis unmöglich werden.

Einfaches Beispiel wäre z.B. [abc]{3} und [abd]*.
Zum einen ist klar: Länge muss genau 3 sein und es kann nur a und b geben: [ab]{3}
Das wäre dann sozusagen die "und Verknüpfung".

Und die Frage ist dann tatsächlich, in wie weit das Design noch tragbar ist, wenn solche komplexen Dinge notwendig werden. Zumal die regulären Ausdrück mit höherer Komplexität immer fehleranfälliger werden und kaum noch zu warten sein dürften.

Sorry, dass ich Dir nicht besser weiter helfen konnte, aber ich fürchte fast, dass es da keine simple Lösung für euch gibt.

Konrad
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Regex Und-Verknüpfung? Allgemeine Java-Themen 7
H Frage regex greater than less than Allgemeine Java-Themen 7
N Regex schlägt nicht an Allgemeine Java-Themen 10
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
T regex case insensitive trimmed Allgemeine Java-Themen 6
S Zeichen | in regex Allgemeine Java-Themen 8
X Regex mit mehreren Bedingungen machen Allgemeine Java-Themen 5
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
C Java17 und Regex Allgemeine Java-Themen 13
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
N Gierigen Regex in nicht-gierigen umwandeln Allgemeine Java-Themen 4
N E-Mail Validator (ohne Regex!) Allgemeine Java-Themen 7
OnDemand Regex von bis Allgemeine Java-Themen 6
W Versionsnummer auslesen - Regex ist zickig Allgemeine Java-Themen 2
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
G Regex Allgemeine Java-Themen 2
L regex ganzer string? Allgemeine Java-Themen 2
MiMa Geldbetrag mit regex ermitteln. Allgemeine Java-Themen 14
W RegEx Stringliteral finden - Jflex Allgemeine Java-Themen 5
D Regex Probleme Allgemeine Java-Themen 2
Kirby.exe Regex charakter ignorieren Allgemeine Java-Themen 12
S Java SAT (Haltbarkeitsproblem) mit Regex Allgemeine Java-Themen 6
S [Regex] Nur diese Zeichen beachten Allgemeine Java-Themen 1
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
J Compilerfehler bis in java.util.regex.Pattern... Allgemeine Java-Themen 2
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
P RegEx für Zeiten Allgemeine Java-Themen 7
D Regex: Komplettes Wort bekommen Allgemeine Java-Themen 3
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
P RegEx Allgemeine Java-Themen 3
W String Parsen und auf eigenes Muster anwenden (kein Regex) Allgemeine Java-Themen 11
Y regex | n-faches Vorkommen oder gar keins Allgemeine Java-Themen 6
turmaline Regex gegen Regex prüfen Allgemeine Java-Themen 4
HarleyDavidson Regex - Optimierung Allgemeine Java-Themen 4
M Regex für Zahleneingabe in JavaFX Textfield Allgemeine Java-Themen 18
T Best Practice Wortregeln RegEx Allgemeine Java-Themen 11
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
H Interpreter-Fehler Regex kompiliert nicht Allgemeine Java-Themen 5
M RegEx alle Matches ausgeben Allgemeine Java-Themen 5
Iron Monkey Mit Regex nach Beträge suchen Allgemeine Java-Themen 4
T REGEX Erklaerung Allgemeine Java-Themen 14
T Nur innerhalb des regex-Match ersetzen Allgemeine Java-Themen 9
H Pic Download / Regex Problem Allgemeine Java-Themen 7
F Frage zu Regex möglich Allgemeine Java-Themen 4
M Regex... mal wieder Allgemeine Java-Themen 3
H RegEx - Ersetze alles bis Leerzeichen Allgemeine Java-Themen 5
S regex verbrät CPU Allgemeine Java-Themen 6
V Regex Bereichs Filter Allgemeine Java-Themen 4
127.0.0.1 RegEx _ und 0-9 Allgemeine Java-Themen 45
S Entfernen von allen Nicht-Buchstaben chars aus einem String ohne Regex..? Allgemeine Java-Themen 10
P Java String Regex Allgemeine Java-Themen 2
AyKay Regex XPath Allgemeine Java-Themen 4
C Regex (Case insensitive und Umlaute) Allgemeine Java-Themen 4
D Regex Raute erkennen Allgemeine Java-Themen 2
nrg Zweistelligen Zahlenbereich mit RegEx Allgemeine Java-Themen 8
GilbertGrape Regex-Problem Allgemeine Java-Themen 2
W Denkblockade RegEx Allgemeine Java-Themen 2
S eigene regEx schreiben Allgemeine Java-Themen 4
C Regex expandieren Allgemeine Java-Themen 6
C Regex Überschniedung von Ausdrücken Allgemeine Java-Themen 16
reibi RegEX - Teilstring Allgemeine Java-Themen 6
R Java-RegEx terminiert nicht Allgemeine Java-Themen 3
M Regex: Ich stehe auf dem Schlauch Allgemeine Java-Themen 2
V Kleines Regex-Problem Allgemeine Java-Themen 3
B Regex "Problem" Allgemeine Java-Themen 4
B RegEx: (Um-)formulieren eines Pattern zur Identifizierung komplexer URLs Allgemeine Java-Themen 7
P RegEx mit HTML Parser für Java möglich? Allgemeine Java-Themen 10
J Regex: Fertige URLS aus Javascript Allgemeine Java-Themen 3
N Java regex Allgemeine Java-Themen 5
K Regex JSON Allgemeine Java-Themen 3
J RegEx Ausdruck Allgemeine Java-Themen 2
J Regex: URLS aus CSS Allgemeine Java-Themen 2
G RegEx- Ausdruck Allgemeine Java-Themen 4
G RegEx kein Unterstrich Allgemeine Java-Themen 2
A Text via RegEx durchsuchen und teile ersetzten Allgemeine Java-Themen 5
C Regex: Zahl ohne führende Null Allgemeine Java-Themen 13
W RegEx Zeile parsen Medium Allgemeine Java-Themen 8
X Java String Regex - Sonderzeichen Filtern Allgemeine Java-Themen 5
S Dateiname mit Regex parsen Allgemeine Java-Themen 3
Loyd Noch ne Regex-Frage: Verschachtelte Ausdrücke Allgemeine Java-Themen 4
R Java Regex Frage Allgemeine Java-Themen 17
Daniel_L RegEx-Frage: Ersetzen in UBB ausschließen Allgemeine Java-Themen 2
M Große Datei mit Regex durchsuchen Allgemeine Java-Themen 4
S regex für einen Link Allgemeine Java-Themen 3
E Regex alles nach ? löschen Allgemeine Java-Themen 4
M RegEx-Frage Allgemeine Java-Themen 2
R Regex Tokenizer Allgemeine Java-Themen 11
E Regex HTML Tag und Inhalt löschen Allgemeine Java-Themen 4
H RegEX und eMail Allgemeine Java-Themen 4
L-ectron-X Regex zum Entfernen von mehrzeiligen Kommentaren Allgemeine Java-Themen 2
martin82 Regex - JTable - Filter Allgemeine Java-Themen 10
nrg Kleine Hilfe mit RegEx Allgemeine Java-Themen 2
B Regex-Fehler nach lib-Update Allgemeine Java-Themen 2
K Contrains oder Regex Allgemeine Java-Themen 3
J replaceAll , "[", "]" & regex Allgemeine Java-Themen 12
P RegEx und $-Zeichen als Literal Allgemeine Java-Themen 5
P RegEx - Worte ausschließen Allgemeine Java-Themen 8
S Regex - was isst denn {javaLetter} und {javaDigit}? Allgemeine Java-Themen 2
D Wie werden Regex-Gruppen kompiliert? Allgemeine Java-Themen 2
Stillmatic RegEx Matches ausgeben Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben