String zerlegen

Status
Nicht offen für weitere Antworten.

magic_halli

Bekanntes Mitglied
Hi,

ich bin (mal wieder) am zerlegen eines Strings dran und brauche bitte nochmal Unterstützung.
Ich habe einen String, der einen math. Vergleich enthält. Als Vergleichsoperatoren können alle bekannten vorkommen, z.B.: <,>,!=,<=,>=.
Der String sieht bei mir in etwa so aus: "s_b>200.0" oder "s_bv!=5.0" oder "s_b<=2.0" etc.
Ich habe das mittlerweile so gemacht, um die Einzelteile (linke und rechte Seite vom Vergleichsoperator) zu extrahieren:
Code:
String sFormel = "s_bv>200.0";
Pattern pattern = Pattern.compile("[<>!=]");
String[] saFormelVariable = pattern.split(sFormel);
for(int i=0;i<saFormelVariable.length;i++){
     System.out.println("Teil["+i+"]: "+saFormelVariable[i].toString());
}
Die Ausgabe ist hierfür:
Code:
Teil[0]: s_bv
Teil[1]: 200.0
Wenn jetzt allerdings der String sFormel so aussieht: "s_bv!=200.0" dann ist die Ausgabe:
Code:
Teil[0]: s_bv
Teil[1]: 
Teil[2]: 200.0
Ich möchte das aber so haben, dass ich einmal die linke und rechte Seite vom Operator erhalte und ausserdem den Operator selbst (also entweder ein '<' oder '>' oder '!=' usw.).
Wie kann ich das bewerkstelligen?

Danke und Gruß.
 
Code:
String sFormel = "s_bv<=200.0";
String pattern = "([^<>\\!=]*)([<>\\!=]*)([^<>\\!=]*)";
Matcher m = Pattern.compile(pattern).matcher(sFormel);
if(m.find())
{
	for(int i = 1; i <= m.groupCount(); i++)
		System.out.println(m.group(i));
}
 
masta // thomas hat gesagt.:
Code:
String pattern = "([^<>\\!=]*)([<>\\!=]*)([^<>\\!=]*)";

:shock:

Wie krank muß ich damals in der Uni eigentlich gewesen sein,
um Reguläre Ausdrücke geil zu finden? ???:L
 
Leroy42 hat gesagt.:
masta // thomas hat gesagt.:
Code:
String pattern = "([^<>\\!=]*)([<>\\!=]*)([^<>\\!=]*)";

:shock:

Wie krank muß ich damals in der Uni eigentlich gewesen sein,
um Reguläre Ausdrücke geil zu finden? ???:L

Das ist ein normales Phänomen.
Alles was nicht jeder geil findet(oder besser noch abstoßend), ist für andere doppelt so interessant.
Wenns dazu noch nicht gerade trivial ist, geht man voll drin auf... 🙂

Man könnte Dich auch als Querolant bezeichnen *JOKE* :lol:

greetz
SLi
 
in diesem Fall ist das Monsterpattern aber schrecklich,
das simple split tuts ja fast, bis auf das Verschlucken der Trennzeichen (intern allerdings auch mit RegEx)

da nun mit ^ und capturing groups anzufangen ist der falsche Weg,
dann lieber komplett neubauen, für einfaches Splitten braucht man RegEx eh nicht,
StringTokenizer kopieren und modifizieren 😉

(oder irgendwo muss es das doch schon geben)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben