Regulärer Ausdruck funktioniert nicht

NicoRyl

Mitglied
Hallo zusammen. Mit meinem regulären Ausdruck(Regex) möchte ich SQL-Code (z.B. SELECT spalte1 FROM tabelle1 WHERE name OR surname = 'mueller'; ) validieren. Leider funktioniert der Regex nicht und ich suche seit Stunden den Fehler. Kann mir jemand bitte helfen? Vielen Dank schonmal im Voraus!

Hier der Regex:
Code:
^SELECT\s+(\*?[A-Za-z0-9,\s]*)\s+FROM\s+[A-Za-z0-9]+(\s+WHERE\s+([A-Za-z0-9](\s[ANDOR]\s[A-Za-z0-9]){0,1})\s+[=<>LIKE]{1}\s['][A-Za-z0-9\s]+['])?;$
 
K

kneitzel

Gast
Also ich habe es jetzt nicht im Detail ausprobiert, aber einfach einmal ein paar Hinweise zu Dingen, die auffallen:

a) [ANDOR] bezeichnet ein Zeichen aus der gegebenen Menge also ein A, N, D, O oder R. Was Du hier ggf. meintest ist etwas wie (AND|OR). Und das scheint auch bei folgenden Anwendungen zu gelten (beim LIKE z.B. aber auch das ' sieht dubios aus ... da ist die Frage, was Du genau meintest. Da reicht evtl. ein '? so es ein Optionales ' sein sollte).

b) Das scheint mir nicht unbedingt gültig zu sein:
WHERE name OR surname = 'mueller';
Das wäre eher etwas wie:
Java:
WHERE name = 'mueller' OR surname = 'mueller';

c) bei den \s willst Du evtl. da, wo es noch nicht ist, ein + ergänzen zu \s+ -> mindestens ein Whitespace aber auch gerne mehrere.
 

NicoRyl

Mitglied
Also ich habe es jetzt nicht im Detail ausprobiert, aber einfach einmal ein paar Hinweise zu Dingen, die auffallen:

a) [ANDOR] bezeichnet ein Zeichen aus der gegebenen Menge also ein A, N, D, O oder R. Was Du hier ggf. meintest ist etwas wie (AND|OR). Und das scheint auch bei folgenden Anwendungen zu gelten (beim LIKE z.B. aber auch das ' sieht dubios aus ... da ist die Frage, was Du genau meintest. Da reicht evtl. ein '? so es ein Optionales ' sein sollte).

b) Das scheint mir nicht unbedingt gültig zu sein:

Das wäre eher etwas wie:
Java:
WHERE name = 'mueller' OR surname = 'mueller';

c) bei den \s willst Du evtl. da, wo es noch nicht ist, ein + ergänzen zu \s+ -> mindestens ein Whitespace aber auch gerne mehrere.
Danke für die Antwort. Wie mache ich das denn, dass ein Wort als ganzes erkannt wird und nicht die einzelnen Buchstaben (sprich: 'AND' und nicht 'A,N,D')?
 
K

kneitzel

Gast
Zeichen ohne [] drumherum müssen als solche vorhanden sein. Also wenn Du Dir dein Regulären Ausdruck ansiehst, dann hast Du da ja als erstes das Zeichen für den Anfang des Textes (^) gefolgt von SELECT. Es muss also am Anfang des Textes ein SELECT stehen.

Wenn Du also irgendwo "AND" erwartest, dann musst Du auch einfach nur AND hin schreiben.

Jetzt willst Du aber AND oder OR haben. Das oder wäre ein | Zeichen, also AND|OR. Aber das Oder bezieht sich nun auf alles davor oder eben alles danach. Es soll sich aber nur auf die einzelnen Worte beziehen. Daher setzen wir das in Klammern, denn so haben wir dann erreicht, dass der Ausdruck in dem das | vorkommt, dadurch begrenzt wird.

Und dann auch noch einmal zu den: [] - damit kann man EIN Zeichen eingrenzen. Das hast Du z.B. gemacht durch sowas wie [A-Za-z0-9]. Das steht für ein Zeichen auf dem Bereich A-Z, a-z oder 0-9. (Und aufpassen - da habe ich auch gerade gesehen, dass da nicht immer ein + folgt (was besagt, das das vorangehende Zeichen oder Gruppe mindestens 1 mal aber sonst beliebig oft vorkommen kann!

Ist das so deutlicher geworden?
 

NicoRyl

Mitglied
Zeichen ohne [] drumherum müssen als solche vorhanden sein. Also wenn Du Dir dein Regulären Ausdruck ansiehst, dann hast Du da ja als erstes das Zeichen für den Anfang des Textes (^) gefolgt von SELECT. Es muss also am Anfang des Textes ein SELECT stehen.

Wenn Du also irgendwo "AND" erwartest, dann musst Du auch einfach nur AND hin schreiben.

Jetzt willst Du aber AND oder OR haben. Das oder wäre ein | Zeichen, also AND|OR. Aber das Oder bezieht sich nun auf alles davor oder eben alles danach. Es soll sich aber nur auf die einzelnen Worte beziehen. Daher setzen wir das in Klammern, denn so haben wir dann erreicht, dass der Ausdruck in dem das | vorkommt, dadurch begrenzt wird.

Und dann auch noch einmal zu den: [] - damit kann man EIN Zeichen eingrenzen. Das hast Du z.B. gemacht durch sowas wie [A-Za-z0-9]. Das steht für ein Zeichen auf dem Bereich A-Z, a-z oder 0-9. (Und aufpassen - da habe ich auch gerade gesehen, dass da nicht immer ein + folgt (was besagt, das das vorangehende Zeichen oder Gruppe mindestens 1 mal aber sonst beliebig oft vorkommen kann!

Ist das so deutlicher geworden?
Ja, vielen Dank für die Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Problem - Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 5
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
W Regulärer Ausdruck für 0 oder mehr Blanks Allgemeine Java-Themen 8
M Regulärer Ausdruck Allgemeine Java-Themen 3
R Regulärer Ausdruck Allgemeine Java-Themen 5
G Regulärer Ausdruck für 2 Wörter Allgemeine Java-Themen 3
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
H Problem mit der Klasse Pattern - Regulärer Ausdruck Allgemeine Java-Themen 2
S Regulärer Ausdruck tut überhaupt nichts Allgemeine Java-Themen 2
M Regulärer Ausdruck Allgemeine Java-Themen 6
Iron Monkey Regulärer Ausdruck Allgemeine Java-Themen 2
T Regulärer Ausdruck Allgemeine Java-Themen 6
S Regulärer Ausdruck für HTML-Tag Allgemeine Java-Themen 18
P [Regulärer Ausdruck] Auf Gruppe mit Quantifier separat zugreifen? Allgemeine Java-Themen 2
J Regulärer Ausdruck - Der Punkt und der Zeilenumbruch Allgemeine Java-Themen 6
Iron Monkey Regulärer Ausdruck Allgemeine Java-Themen 6
A Regulärer Ausdruck für die Uhrzeit Allgemeine Java-Themen 3
G Regulärer Ausdruck Allgemeine Java-Themen 4
M Regulärer Ausdruck Allgemeine Java-Themen 3
P Regulärer Ausdruck um sich wiederholende Zeichen zu finden. Allgemeine Java-Themen 9
M Regulärer Ausdruck mit [ und ] Allgemeine Java-Themen 9
J Regulärer Ausdruck Allgemeine Java-Themen 3
N Regulärer Ausdruck Allgemeine Java-Themen 2
M Regulärer Ausdruck Allgemeine Java-Themen 2
B regulärer ausdruck Allgemeine Java-Themen 9
T Einfacher regulärer Ausdruck Allgemeine Java-Themen 2
A Regulärer Ausdruck EMail-Prüfung Allgemeine Java-Themen 3
N Regulärer Ausdruck Allgemeine Java-Themen 2
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
G JavaFX var Ausdruck Allgemeine Java-Themen 1
S Hex Ausdruck kürzen Allgemeine Java-Themen 34
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
L Erste Schritte Ausdruck schöner schreiben? Allgemeine Java-Themen 8
J Frage zu regulärem Ausdruck Allgemeine Java-Themen 2
H Reg Exp Ausdruck erweitern Allgemeine Java-Themen 2
A Bestimmte Sonderzeichen im Regulären Ausdruck Allgemeine Java-Themen 2
B Problem mit Regulärem Ausdruck Allgemeine Java-Themen 4
J RegEx Ausdruck Allgemeine Java-Themen 2
G RegEx- Ausdruck Allgemeine Java-Themen 4
L String Replace mit Regulärem Ausdruck Allgemeine Java-Themen 2
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
T Ausdruck mit pdfBox macht Probleme Allgemeine Java-Themen 2
M Ausgabe in Datei zum Ausdruck Allgemeine Java-Themen 2
F Problem mit regulären Ausdruck in Zusammenhang mit HTML Allgemeine Java-Themen 8
X String zerlegen mittels regulärem Ausdruck Allgemeine Java-Themen 31
M Wertepaar in relulärem Ausdruck Allgemeine Java-Themen 15
A Regulären Ausdruck für Funktionsnamen Allgemeine Java-Themen 4
M Regulären Ausdruck negieren Allgemeine Java-Themen 6
G Frage zu Regulärem Ausdruck Allgemeine Java-Themen 2
S regex-Pattern Ausdruck negieren Allgemeine Java-Themen 2
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
I Composite Pattern für Ausgabe von Ausdruck Allgemeine Java-Themen 3
X problem mit regulären ausdruck Allgemeine Java-Themen 3
F Problem mit regulärem Ausdruck Allgemeine Java-Themen 6
M backreference im regulären ausdruck Allgemeine Java-Themen 9
A Probleme Umwandlung Ausdruck String in double Allgemeine Java-Themen 4
P Dateinamen mit regulärem Ausdruck testen Allgemeine Java-Themen 9
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
stormyark TikTakToe funktioniert nicht Allgemeine Java-Themen 10
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
Lukas2904 Wie funktioniert ein KeyLogger? Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
1Raini Java if-Abfrage funktioniert nicht! Allgemeine Java-Themen 3
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
I Wieso funktioniert das nich? Allgemeine Java-Themen 5
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
A Mp3 Player funktioniert nicht Allgemeine Java-Themen 0
X JNA funktioniert nicht mehr Allgemeine Java-Themen 4
bueseb84 FolderWatcher mit WatchService funktioniert nur bedingt Allgemeine Java-Themen 5
Drachenbauer Division mit Int funktioniert nicht Allgemeine Java-Themen 3
O docx-Datei erzeugung mit DocXStamper funktioniert nicht Allgemeine Java-Themen 2
F Schleife funktioniert nicht richtig Allgemeine Java-Themen 13
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
L Tesseract-OCR 4.0 unter Linux funktioniert nicht Allgemeine Java-Themen 3
J Wie konkret funktioniert das Modulsystem unter Java 11? Allgemeine Java-Themen 4
J Neuronales Netz funktioniert mal und mal nicht. Allgemeine Java-Themen 3
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
A Methodenaufruf funktioniert nicht richtig Allgemeine Java-Themen 5
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
J FTPSClient funktioniert nicht Allgemeine Java-Themen 4
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
M Operatoren Warum funktioniert diese überprüfung nicht? Allgemeine Java-Themen 7
R jar-Datei funktioniert nicht Allgemeine Java-Themen 2
E Open Declaration Funktioniert nicht Allgemeine Java-Themen 0
R Verschlüsselung funktioniert nicht Allgemeine Java-Themen 5
RalleYTN requires transitive funktioniert nicht? Allgemeine Java-Themen 7
R Bruteforce hashes mit multithreading. Funktioniert das so? Allgemeine Java-Themen 0
P Best Practice Wieso funktioniert der Modulo - Operator nicht? Allgemeine Java-Themen 2
HarleyDavidson Eigener PropertyChangeListener funktioniert einfach nicht Allgemeine Java-Themen 3
J Exclude funktioniert nicht Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben