Hallo,
ich habe eine Datei die ich parse und in einer Schleife alle Elemente checke. Bei Finden eines ersten Elements überprüfe ich dieses erneut und möchte dann aus diesem eine Information ziehen.
Beispiel:
- erstes zu findendes Teil ist: <irgendeinen xml tag><![CDATA[123456]><...>. Es gibt genau eine Zeile in der ein bestimmter XML tag zu finden ist. Den kann ich selektieren.
- wenn ich den XML Teil gefunden habe, möchte ich nun genau die Zahl (immer 6stellig) extrahieren und das klappt nicht
Den ersten Teil findet er immer, ich erhalte immer die Zeile und das wird auch richtig selektiert. Nun ist innerMatcher.find() aber immer falsch obwohl auf den String group (das ist "CDATA[123456") das Pattern \d{6} doch genau die 6stellige Zahl zurückgeben müßte.
Ich habe das mit QuickREx in Eclipse nachgestellt und der findet das immer, nur mein Programm nicht.
Ich glaub ich bin blind :lol: kann mir wer den Fehler sagen?
Thx
Fry
ich habe eine Datei die ich parse und in einer Schleife alle Elemente checke. Bei Finden eines ersten Elements überprüfe ich dieses erneut und möchte dann aus diesem eine Information ziehen.
Beispiel:
- erstes zu findendes Teil ist: <irgendeinen xml tag><![CDATA[123456]><...>. Es gibt genau eine Zeile in der ein bestimmter XML tag zu finden ist. Den kann ich selektieren.
- wenn ich den XML Teil gefunden habe, möchte ich nun genau die Zahl (immer 6stellig) extrahieren und das klappt nicht
Code:
[...]
Pattern outerPattern = Pattern.compile("CDATA.\\d{6}");
Pattern innerPattern = Pattern.compile("d\\{6}");
Matcher outerMatcher;
Matcher innerMatcher;
boolean done = false;
String line;
line = reader.readLine();
while (!done) {
if(line == null) {
done = true;
}
else {
outerMatcher = outerPattern.matcher(line);
if(outerMatcher.find()) {
String group = outerMatcher.group();
innerMatcher = innerPattern.matcher(group);
if(innerMatcher.find()) {
writer.println("blbalalallala " + innerMatcher.group());
}
}
line = reader.readLine();
}
}
writer.close();
Den ersten Teil findet er immer, ich erhalte immer die Zeile und das wird auch richtig selektiert. Nun ist innerMatcher.find() aber immer falsch obwohl auf den String group (das ist "CDATA[123456") das Pattern \d{6} doch genau die 6stellige Zahl zurückgeben müßte.
Ich habe das mit QuickREx in Eclipse nachgestellt und der findet das immer, nur mein Programm nicht.
Ich glaub ich bin blind :lol: kann mir wer den Fehler sagen?
Thx
Fry