K
Katjushka
Gast
GEGEBEN: Eine Text-Datei 10MB mit den URLs und ihren Inhalten. Die sieht etwa so aus:
ZIEL: Firmennamen aus den URLs extrahieren
VORGANG: 1. Jede URL und ihre Inhalt wird in einen Array blocks[] eingelesen. Das Array enthält also in jeder Zelle
eine URL und ihre Inhalt
2. Das Array wird durchgelaufen, und in jeder "Zelle" wird nach dem RegEx gesucht. Bis jetzt habe ich es so
gemacht:
PROBLEM: Das Verarbeiten von "kleinen" URLs geht ziemlich flott, für die größeren Inhalte braucht das Programm
aber sehr lange.
LÖSUNG, DIE ICH MIR VORSTELLE: innerhalb der Zellen Zeilenweise einlesen, also etwas in der Art:
Wie könnte ich so etwas implementieren?
Vielen Dank im Voraus.
@@@ http://braeustueble.de/impressum.html
[br_Logo_web.gif]
Impressum
Gaststätte Bräustüble GbR
Postadresse
Schloßstraße 14
74831 Gundelsheim
Telefon
06269-8453
FAX
06269-45285
service@braeustueble.de
Vertretungsberechtigte Gesellschafter: Gisela Frank
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen wir
keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten
Seiten sind ausschließlich deren Betreiber verantwortlich.
Kontakt
ZIEL: Firmennamen aus den URLs extrahieren
VORGANG: 1. Jede URL und ihre Inhalt wird in einen Array blocks[] eingelesen. Das Array enthält also in jeder Zelle
eine URL und ihre Inhalt
2. Das Array wird durchgelaufen, und in jeder "Zelle" wird nach dem RegEx gesucht. Bis jetzt habe ich es so
gemacht:
Code:
for(int i =0; i<blocks.length; i++){
Matcher matcher2 = pattern2.matcher(blocks[i]);
while(matcher2.find()){
String regexImage ="(\\[.*|\\s{2,}|\\*|@@@.*|www.*|.*\\|.*|ist.*|\\sin\\s.*|\\s.\\s|Verantwortlich für diese Seite|\\s.{4}\\s{2,}|Firmenname:?\\s*|Vereinsname:?|Name:?|\\d{3,}|Firma:?\\s|Verantwortlich für die Website:|Email.*|\\.\\W*|Info:.*|Mail:.*|\\sund.*|,.*|\\_*)";
Pattern patternImage= Pattern.compile(regexImage);
firmenname = matcher2.group();
Matcher matcherImage =patternImage.matcher(firmenname);
firmenname = matcherImage.replaceAll("");
if (firmenname.length() > 5){
firmenname="Firmenname: "+firmenname+"\n";
try {
for (int n=0; n < firmenname.length(); n++){
schreibeStrom.write((byte)firmenname.charAt(n));
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
aber sehr lange.
LÖSUNG, DIE ICH MIR VORSTELLE: innerhalb der Zellen Zeilenweise einlesen, also etwas in der Art:
Code:
for(int i =0; i<blocks.length; i++){
while((thisLine=reader.readLine())!=null){// oder so ähnlich
TODO
}
}
Vielen Dank im Voraus.