Reguläre Ausdruecke!

Status
Nicht offen für weitere Antworten.

schlaubie

Bekanntes Mitglied
Hallo Leute ich möchte alle Zeichen die zwischen einem Wort und der ersten öffnenden Klammer stehen auslesen!

Bsp: insert into emp (empno,ename)values....

Dann möchte ich den Tabellennamen haben allso emp!

Nur leider funktioniert das Kaskadieren der öffnenden Klammer nicht!
Ich habe es auch schon mit \u0028 probiert aber dann sagt er auch das er einen Schließende Klammer vermisst!
HELP

Besten Dank im Vorraus
 
schlaubie hat gesagt.:
Hallo Leute ich möchte alle Zeichen die zwischen einem Wort und der ersten öffnenden Klammer stehen auslesen!

Bsp: insert into emp (empno,ename)values....

Dann möchte ich den Tabellennamen haben allso emp!

Also wenn ich das jetzt mal richtig kapiert hab, ist das da oben ein String, der deinem Programm jetzt bereits vorliegt?

Dann sollte das per Parsen funktionieren...

Code:
String s = "insert into emp (empno,ename)values....";
String s2[] = s.split(" ");
Vector<String> words = new Vector<String>(0, 1);
for (int i = 1; i<s2.length; i++) { //Mit eins anfangen, da das erste Wort ja nicht gebraucht wird
	if (s2[i].indexOf("(")) == -1) {
		words.add(s2[i];
	} else {
        break;
    }
}
String woerter = words.toArray();

//da emp ja ein Eintrag vor der Klammer steht, brauchst du nur den
//letzten Eintrag aus dem Array zu nehmen, und hast deinen "Tabellennamen"

String tabellenname = woerter[length-1];

//Code nicht getestet, aber so in der Art sollte es klappt, denke ich...

MfG
MPW
 
Warum so kompliziert? Einfacher gehts so:

Code:
String foo = "insert into emp (empno,ename)values";
String bar = "into";
String result = foo.substring(foo.indexOf(bar)+bar.length(), foo.indexOf("(")).replaceAll(" ", "");

Oder halt mit Regex. :roll:
 
als java string: "\\s([^\\s]*?)\\s\\("
liefert "emp" in der 1. group
sinnvoller wäre aber denke ich einfach zu gucken was nach "insert into" kommt? wär dann: "(?<=insert into )[^\\s]*"
 
OK Dank hier mal meine Lösung mit Regex
String pattern = "(.*)"+"(into)" + "(.*)"+"("+"\\("+")"+"(.*)";

Ergebniss dann in 3 Gruppe
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben