RegExp mit "Untergruppen" - wie komme ich an die?

Status
Nicht offen für weitere Antworten.

Milo

Bekanntes Mitglied
Hi,

ich habe ein kleines Problem mit regulären ausdrücken. ich habe mir Grundzüge von Pattern-Matching durchgelesen, konnte es aber nicht auf mein Problem übertragen.

Dort heißt es: "Eine nette Funktion des Matchers ist, das er über so genannte 'capturing groups' verfügt, die beim Erstellen des RegEx definiert werden".

Das ist soweit auch okay, wie komme ich aber an Untergruppen?

Mein Ausdruck:

Code:
Pattern regExp = Pattern.compile( "((\\S+).+?){2,2}((-{0,1}\\d+\\.\\d+).+?){3,4}(.*)" );

der soll auf einen Zeichenkette dieser Art
Code:
String str = "300   101   0.0   0.0   85.3752523398";

oder dieser Art
Code:
String str = "300   101   0.0   0.0   85.3752523398   0.0003";

wobei die "Zwischenräume" frei wählbar sein sollen. Wie komme ich nun zB an die 300 ran? group(1) liefert mir bereits den nächsten Wert (101)

Gruß Micha
 
S

SlaterB

Gast
so weit ich weiß ist das nicht möglich,

in deinem Fall noch nicht ganz so schlimm,
wenn du weißt, dass es genau 2 Gruppen sind, dann kannst du ((\\S+).+?) zweimal hintereinanderschreiben

edit: group(0) ist immer der gesamte match
 

Milo

Bekanntes Mitglied
Hallo,

der erste Teil ist auch weniger Problematisch. Der zweite Teil wird etwas komplexer. Hier ändert sich unter umständen die Länge des Strings.

Ich kann hier also nicht so einfach verketten. Zwei Ausdrücke zu testen ist extrem langsam. Da dauert die Auswertung extrem lang; warum auch immer. Drum bin ich ja auf eine verkürzte Version umgesattelt (mit Hilfe).

Das hatte ich selbst erstellt:
Code:
String regExp1 = new String("(\\S+).+?(\\S+).+?(-{0,1}\\d+\\.\\d+).+?(-{0,1}\\d+\\.\\d+).+?(-{0,1}\\d+\\.\\d+).+?(\\d+\\.\\d+)(.*)");
String regExp2 = new String("(\\S+).+?(\\S+).+?(-{0,1}\\d+\\.\\d+).+?(-{0,1}\\d+\\.\\d+).+?(-{0,1}\\d+\\.\\d+)(.*)");


Gruß Micha
 
S

SlaterB

Gast
erstmal:
nie 'new String', wenn du das in deinem Code findest und keinen guten Grund dafür hast (ich wüßte keinen),
dann raus,

bei dem langen RegExp kannst du doch die letzte Zahl optional machen?
String regExp1 = "(\\S+).+?(\\S+).+?(-{0,1}\\d+\\.\\d+).+?(-{0,1}\\d+\\.\\d+).+?(-{0,1}\\d+\\.\\d+).+?(\\d+\\.\\d+)?(.*)";
statt
String regExp1 = "(\\S+).+?(\\S+).+?(-{0,1}\\d+\\.\\d+).+?(-{0,1}\\d+\\.\\d+).+?(-{0,1}\\d+\\.\\d+).+?(\\d+\\.\\d+)(.*)";

dann klappts bei mir (letzte group ist dann null)

--------

zu Performanz sage ich erstmal nichts,
du weißt, dass du Pattern compilen und dann wiederverwenden kannst?

wenn du ein Testprogramm mit Ausgabe
Dauer A = 5000 ms
Dauer B = 1000 ms
schreibst, dann kann ich es mir mal anschauen

aber für einzelne CapturingGroups mehr Aufwand, das klingt für mich nicht unlogisch
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D RegExp .txt-Datei einlesen Java Basics - Anfänger-Themen 6
L RegExp bzw Pattern in Java Java Basics - Anfänger-Themen 6
D Regexp einer Auflistung Java Basics - Anfänger-Themen 9
B RegExp in Java Java Basics - Anfänger-Themen 5
Y Regexp gesucht Java Basics - Anfänger-Themen 6
N Regexp Pattern & Matcher Problem Java Basics - Anfänger-Themen 4
R Regexp nur Buchstaben und Ziffener beliebig oft Java Basics - Anfänger-Themen 3
D Regexp Java Basics - Anfänger-Themen 3
D regexp-pattern .. letzter schliff Java Basics - Anfänger-Themen 6
M RegExp: String in Array Java Basics - Anfänger-Themen 7
Z regexp/pattern für dateipfad Java Basics - Anfänger-Themen 5
S RegEXP Java Basics - Anfänger-Themen 3
S Regexp Java Basics - Anfänger-Themen 4
K RegExp - Problem Java Basics - Anfänger-Themen 4
G JAVA: RegExp Java Basics - Anfänger-Themen 3
C regexp gibt immer false aus Java Basics - Anfänger-Themen 4
G Suche RegExp Java Basics - Anfänger-Themen 4
Y Hilfe bei Pattern-Regexp Java Basics - Anfänger-Themen 5
lhein RegExp - Frage Java Basics - Anfänger-Themen 6
G RegExp Java Basics - Anfänger-Themen 21
G Mittels RegExp "Variablen" extrahieren Java Basics - Anfänger-Themen 4
G Java Regex / Pattern etc. <-> Jakarta RegExp Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
B Keine Ausgabe .. Woran liegt das? Ich komme nicht weiter Java Basics - Anfänger-Themen 14
P Ich komme nicht mehr weiter bei so einer einfachen Sache... Java Basics - Anfänger-Themen 18
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
D Komme nicht weiter... Java Basics - Anfänger-Themen 4
N JSON - komme nicht weiter Java Basics - Anfänger-Themen 2
E Taschenrechner problem! Ich komme nicht voran Java Basics - Anfänger-Themen 18
B Erste Schritte Wie komme ich aus Static raus?!! Java Basics - Anfänger-Themen 4
S Komme nicht weiter...:-/ Java Basics - Anfänger-Themen 3
D Endlosschleife und ich komme nicht raus! Java Basics - Anfänger-Themen 8
N Explode in Java (split). Komme nicht weiter. Java Basics - Anfänger-Themen 2
H inputfeld dezimalzahl mit komme statt punkt Java Basics - Anfänger-Themen 12
K Hilfe, komme nicht weiter in meinem JAVA-Spiel Java Basics - Anfänger-Themen 3
A Befehl gesucht....wie komme ich an Folgendes Objekt? Java Basics - Anfänger-Themen 6
S Ich komme mit Java nicht klar Java Basics - Anfänger-Themen 7
0 Calendar - komme nicht weiter mit add Java Basics - Anfänger-Themen 2
J Anfängeraufgabe - komme nicht weiter Java Basics - Anfänger-Themen 2
J Arrayübergabe, ich komme nicht weiter Java Basics - Anfänger-Themen 2
D DefaultEditorKid komme nicht weiter! Java Basics - Anfänger-Themen 4
M Komme net weiter Java Basics - Anfänger-Themen 7
T Hilfe..ich komme bei Klassen nicht mer weiter Java Basics - Anfänger-Themen 4
E wie komme ich an den key einer hashmap Java Basics - Anfänger-Themen 8
K 50 errormeldungen- komme auch nach vielen Nachmittagen nicht weiter. bitte helfen Java Basics - Anfänger-Themen 39
G Wie komme ich an das Pfadtrennzeichen? Java Basics - Anfänger-Themen 7
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
G J2EE Tutorial . komme nicht weiter Java Basics - Anfänger-Themen 7
F Komme aus der Delphi-Welt und brauch jetz Java. Java Basics - Anfänger-Themen 5
L Liste in Liste wie komme ich wieder an die Objekte ran Java Basics - Anfänger-Themen 5
G Instanziierung [HILFE ich komme nicht weiter] Java Basics - Anfänger-Themen 10
B Primzahlprüfung, komme nicht weiter Java Basics - Anfänger-Themen 11
G Hilfe komme nicht weiter bei diesen aufgaben Java Basics - Anfänger-Themen 2
J Package kompileren/ausführen - komme nicht weiter Java Basics - Anfänger-Themen 4
P Komme mit relativen Pfadangaben durcheinander Java Basics - Anfänger-Themen 8
K Programm in der main()-Methode starten: Wie? Komme von C++ Java Basics - Anfänger-Themen 11
R komme nicht weiter Java Basics - Anfänger-Themen 10
K komme in meinem stammchat nicht rein. Java Basics - Anfänger-Themen 6
G Owner von JDialog;Komme einfach nicht weiter Java Basics - Anfänger-Themen 4
megachucky nochmal JDBC. komme nicht weiter. Java Basics - Anfänger-Themen 4
D komme heute mit dem DecimalFormat nicht klar... Java Basics - Anfänger-Themen 2
S Wie komme ich an den Text, aus einem JTextfield? Java Basics - Anfänger-Themen 6
C komme nicht klar mit den Threads Java Basics - Anfänger-Themen 5
H komme mit casten nicht klar Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben