Interpreter-Fehler Regex kompiliert nicht

HimBromBeere

Top Contributor
Tach allerseits,

ich bin mal wieder online. Heute hab ich mich mal mit regulären Ausdrücken beschäftigt und komm irgendwie grade nicht weiter. Folgendes Szenario

Java:
public static void main(String[] args) {
		String folder = "history\\";
		String test3 = folder + "2012-03-16/kml/trace_2012-03-16__12-36-19-222.kml";
		
		System.out.println(test3.matches(".*trace_(\\d{4})-(\\d{2})-(\\d{2})__(\\d{2}-\\d{2}-\\d{2}-\\d{3}).kml"));
		Pattern p = Pattern.compile(".*trace_(\\d{4})-(\\d{2})-(\\d{2})__\\d{2}-\\d{2}-\\d{2}-\\d{3}.kml");
		Matcher m = p.matcher(test3);
		
		if (m.find()) {
			for (int i = 0; i < m.groupCount(); i++) System.out.println(m.group(i));
		}
		
	}
Ich hab ´nen Haufen kml-Dateien, die alle nach dem selben Muster abgelegt werden. Also bau ich mir ein regex um sämtliche dieser Dateien auf einmal abzuarbeiten (warum das in dem Fall nicht über einfaches Iterieren mittels
Code:
File
-Objekt geht, spar ich mir jetzt erstmal). Nun zur Frage: Der
Code:
sysout
am Anfang gibt mir true zurück, der Matcher beinhaltet jedoch nur die beiden Zahlen
Code:
2012
und
Code:
03
. Irgendjemand eine Idee, woran das liegen kann?

Achja, Hintergrund ist eigtl. ein kurzes Javascript, aber da zumindest regex überall einigermaßen gleich funktioniert und ich das mit JAVA wesentlich einfacher testen kann, hab ich das Thema mal hier gebaut. Zum Schluss soll einfach ein Zeitstempel herauskommen in der Form
Code:
yyyy-mm-dd HH24:mi:ss:sss
(bzw. was auch immer der richtige Terminus für Tausendstel Sekunden ist)
 
Zuletzt bearbeitet:
Capturing groups are indexed from left to right, starting at one. Group zero denotes the entire pattern, so the expression m.group(0) is equivalent to m.group().
Ja, stimmt, das hatte ich ursprünglich schon so, ändert aber nix an der Tatsache, dass nicht alle Referenzen übernommen werden.
Code:
 group(0)
gibt mir ja nur den gesamten String aus, was aber an sich ja erstmal kein Fehler ist.
 
als Denksportaufgabe bisher halb (eher weniger) offen gelassen, nun deutlicher:
die Schleife muss bis groupCount() gehen, nicht einen davor aufhören 😉
 

Neue Themen


Zurück
Oben