S
Samuel
Gast
Irgendwie will es nicht in meinem Kopf
wie bekomme ich das A aus der Zeile extrahiert?
gibt mir "then B"
Ich brauch mehr einen Matcher, als einen Splitter, der Pattern matcher gibt mir jedoch nur true oder false aus, aber nicht die gematchen Teile.
Wie bekomme ich diese Teile denn nun? Gruppierungsklammern um \\w+ helfen ja anscheinend auch nicht, ich brauch entweder das A oder etwas komplexeres, denn der String könnte auch "if A and B and C then D" heißen.
Der Matcher hat damit keine Probleme:
Aber ich brauch die einzelnen Teile in sinnvolle Abschnitte gruppiert...
Edit, ich habe es teilweise mit
Lösen können, da gibts nur ein Problem, ist der String
"if A and B then C"
So sind die Gruppen:
Aber wenn ich den String
"if A and B and C then D" nehme:
So schluckt er mir die mittlere Gruppe, obwohl ich doch den Quantifier * da habe, grrrrrrrr
Code:
String s = "if A then B";
wie bekomme ich das A aus der Zeile extrahiert?
Code:
s.split("if\\s+(\\w+)");
Ich brauch mehr einen Matcher, als einen Splitter, der Pattern matcher gibt mir jedoch nur true oder false aus, aber nicht die gematchen Teile.
Wie bekomme ich diese Teile denn nun? Gruppierungsklammern um \\w+ helfen ja anscheinend auch nicht, ich brauch entweder das A oder etwas komplexeres, denn der String könnte auch "if A and B and C then D" heißen.
Der Matcher hat damit keine Probleme:
Code:
boolean matches = s.matches("if\\s+\\w+\\s+(and\\s+\\w+\\s+)*then\\s+\\w+");
Aber ich brauch die einzelnen Teile in sinnvolle Abschnitte gruppiert...
Edit, ich habe es teilweise mit
Code:
Matcher m = Pattern.compile("if\\s+(\\w+)\\s+(and\\s+(\\w+)\\s+)*then\\s+\\w+").matcher(s);
m.find();
Lösen können, da gibts nur ein Problem, ist der String
"if A and B then C"
So sind die Gruppen:
Code:
0 if A and B then C
1 A
2 and B
3 B
Aber wenn ich den String
"if A and B and C then D" nehme:
Code:
0 if A and B and C then D
1 A
2 and C
3 C