[Regulärer Ausdruck] Auf Gruppe mit Quantifier separat zugreifen?

Perpetuum

Neues Mitglied
Hallo Java-Forum!

Ich habe folgenden String den ich mit dem angegeben reguläre Ausdruck überprüfen und gleichzeitig einige Daten rausziehen möchte :

String: aktuelleMitspieler(("Spielername1", vi), ("Spielername2", gr), ...).

Java:
String player = "\\(\".*\",\\s*(?:vi|gr|ge|or|ro)\\)";
String regex = "aktuelleMitspieler\\((" + player + ",\\s*){0,4}(" + player + ")\\)\\.";

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(message);
m.find();

for(int j = 0; j <= m.groupCount(); j++) {
     System.out.println(m.group(j));
}

Das Problem ist, wenn er z. B. drei Spieler im String hat, die erste Gruppe nicht jeweils separat gefunden wird, sondern kokateniert as ein String.

Beispiel: aktuelleMitspieler(("Spielername1", vi), ("Spielername2", gr), ("Spielername3", ro)).

Die erse gefundene Gruppe ist ("Spielername1", vi), ("Spielername2", gr), und die zweite ("Spielername3", ro).

Warum wird die Gruppe nicht separat angegeben?

Viele Grüße
Perpetuum
 

nrg

Top Contributor
ohne mich jetzt weiter in dein RegEx reinzudenken, einfach mal die Frage vorweg: warum splittest du das nicht einfach in ein array?
 

Wortraum

Bekanntes Mitglied
Er nimmt den größtmöglichen Fund, der nicht mit zwei Klammern schließt, und das ist ("Spielername1", vi), ("Spielername2", gr).

(" am Anfang, dann beliebige Zeichen zwischen "" bis zum Beistrich; trifft zu auf:
("Spielername1", vi), ("Spielername2"

Dann können noch ein Beistrich, beliebig viele Weißzeichen und vi, gr, ge, or, oder ro kommen, dann eine Klammer und ein Punkt; trifft zu auf:
, gr)“.

Nun weißt Du, was Du wolltest, und das hast Du bekommen. ;)
Dieses „gierige“ Verhalten kannst Du ändern, wenn Du ein weiteres Fragezeichen einfügst:
String player = "\\(\".*?\",\\s*(?:vi|gr|ge|or|ro)\\)";

Allerdings bekommst Du deswegen nicht alle Spieler einzeln, denn wenn eine Gruppe mehrfach zutrifft, kann man nur auf die letzte zugreifen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
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
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
P Problem - Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 5
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
N 2 Objekte zu einer Gruppe zusammenfügen Allgemeine Java-Themen 7
frankred Threads Auf eine Gruppe von Threads warten Allgemeine Java-Themen 11
M Zahl aktiver Threads einer Gruppe verlässlich abfragen Allgemeine Java-Themen 3
Antoras Suche Projektarbeit für Gruppe mit 3 Leuten Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben