[C]Ganze Wörter aus Textfile auslesen
Burschi1620 09.07.2006 - 13:39 2151 22
Luzandro
OC Addicted
|
http://www.galileocomputing.de/open...40001571F02E100es ließe sich allerdings auch recht gut mit regulären ausdrücken rausfiltern, nur sind die am anfang wohl auch nicht so leicht zu verstehen http://java.sun.com/j2se/1.5.0/docs...ex/Pattern.htmlhttp://java.sun.com/j2se/1.5.0/docs...ex/Matcher.htmlhttp://www.galileocomputing.de/open...40001561F013100import java.util.regex.*;
public class Main {
public static void main(String[] args) {
String input = "****** PC NAME BEGIN ******\n"+
"Blaa fuer PC NAME ist gestartet worden\n"+
"Verbinde to PC NAME...\n"+
"System information for PC NAME:\n"+
"Uptime: 325446345 Tage 34343 Minuten....\n"+
"Pocessors:\n"+
"PATCHES Installed\n"+
"****** PC NAME ENDE ******\n"+
"****** PC NAME2 BEGIN ******\n"+
"Blaa fuer PC NAME2 ist gestartet worden\n"+
"Verbinde to PC NAME2...\n"+
"System information for PC NAME2:\n"+
"Uptime: A325446345 Tage 34343 Minuten....\n"+
"Pocessors:\n"+
"PATCHES Installed\n"+
"****** PC NAME2 ENDE ******\n";
String beginMarker = "^\\*{6} (.*?) BEGIN \\*{6}$";
String endMarker = "^\\*{6} (.*?) ENDE \\*{6}$";
String uptime = "^Uptime: (.*?)$";
Pattern p = Pattern.compile(beginMarker + ".*?" + uptime + ".*?"+ endMarker, Pattern.MULTILINE | Pattern.DOTALL);
Matcher m = p.matcher(input);
while (m.find()) {
System.out.println("PC: "+ m.group(1));
System.out.println("uptime: "+ m.group(2));
System.out.println("====================");
}
}
}
Bearbeitet von Luzandro am 12.07.2006, 07:56
|
M.I.P.S.
Big d00d
|
Also für sowas würd ich entweder Perl verwenden oder wenn unbedingt ein C-code erzeugt werden soll "flex".
|
gue
Addicted
|
und wo ist das problem? (abgesehen davon, dass dort auch innerhalb der wörter gesucht wird) Also in Burschi's Fall hätte es schon funktionieren müssen, es kann nur ein Problem auftreten, wenn das gesuchte Wort am Ende des Puffers eingelesen wird (naja ... wenn du dir den Code anschaust siehst es eh sofort). OnTopic: Für sowas eignet sich Java wirklich viel besser. Luzandro hat eh schon eine schöne Lösung gepostet. Wenn du die regulären Ausdrücke nicht verstehst, dann kannst du hier auch Stringoperationen verwenden, die sollten auch ausreichen.
|
COLOSSUS
AdministratorGNUltra
|
Also wenn das nicht grade eine Programmier-Fleiszaufgabe ist, schreit das geradezu nach `grep`.
|
Luzandro
OC Addicted
|
Also wenn das nicht grade eine Programmier-Fleiszaufgabe ist, schreit das geradezu nach `grep`. gibt grep bei einem match nicht einfach die ganze zeile aus? mit awk sollte es gehen
|
mat
AdministratorLegends never die
|
ich frag mich nur warum dieser thread schon 20 posts hat. die aufgabe ist in so gut wie jeder (skript) sprache mit file io in kürze lösbar
|
COLOSSUS
AdministratorGNUltra
|
gibt grep bei einem match nicht einfach die ganze zeile aus? mit awk sollte es gehen `grep -o` hilft.
|
pong
Addicted
|
also ich wüsste jetzt nicht wie ich das einfacher anstellen könnte. Abgesehen davon wäre das dann ein array mit 1 Million zeichen *g* Und? Da du es ja sowieso nicht interaktiv bearbeitest, wirst du - worst case - die 5 Minuten verkraften können die der schwächliche PC braucht um das File abarbeiten zu können. Bei deinem Anwedungsgebiet - satzweise Verarbeitung - würde ich mir aber einfach einen freien Cobol Compiler nehmen und ein einfaches Filematching anwenden, wären - schätzungsweise - max. 100 Zeilen Code pong
|