Lesen Sie HTML-Textdaten, lesen Sie sie mit Java, nachdem Sie sie in die Liste aufgenommen haben Lesen Sie die String-Daten in der Liste, ersetzen Sie sie durch einen regulären Ausdruck, verarbeiten Sie sie und speichern Sie sie in allen.
Stapelverarbeitung einer großen Anzahl ähnlicher Dateien Das Hinzufügen der zeilenweisen Liste zum Lesen der Datei mit Java wurde abgeschlossen.
Sie können die Daten, die im selben regulären Ausdruck wie ein anderer stecken bleiben, speichern Unterstützt mehrere Treffer Die Anzahl der Daten ändert sich nicht, indem eine Ausnahmeverarbeitung durchgeführt wird, wenn kein Treffer vorliegt
Durchsuchen Sie alle Daten von String in der Liste Wenn die gewünschten Daten gefunden wurden, werden sie ersetzt und in all (String) gespeichert. Ab welcher Nummer sollen die gewünschten Daten gespeichert werden Was zu tun ist, wenn keine gewünschten Daten vorhanden sind, kann durch das Argument entschieden werden Überhaupt keine Operation, wenn "" Zu anderen Zeiten wird das angegebene Zeichen hinzugefügt und durch Kommas getrennt.
Streit | Bedeutung |
---|---|
be | String vor dem Ersetzen des regulären Ausdrucks |
af | String nach dem Ersetzen des regulären Ausdrucks |
no | Zeichenkette, wenn sie nicht in der Suche enthalten ist |
s | Von wie vielen Treffern denkst du? |
num | Wie viele Treffer sind zu beachten? |
be_set | Startet die Suche, nachdem die hier eingegebene Zeichenfolge getroffen wurde |
af_set | Beenden Sie die Suche, wenn die hier eingegebene Zeichenfolge getroffen wird |
Für alle Elemente der Liste --Be Hit Bestätigung
Bei Trefferbestätigung --Wenn be_flag wahr ist --Überprüfen Sie den Treffer vor dem Ersetzen, ersetzen Sie ihn und fügen Sie ihn zum Speichern hinzu (Liste)
Wenn jedoch die Anzahl der Trefferbestätigungselemente 1 beträgt, fügen Sie sie hier zu allen hinzu und kehren Sie zurück
Bei Trefferbestätigung (Pause bei Treffer)
Für alle Elemente von save
Ausnahmebehandlung von save.size = 0
Ausnahmebehandlung der Größenbeziehung zwischen save.size und dem Argument der Anzahl der Treffer in der Suche
Fügen Sie allen die Anzahl der Elemente hinzu
call
sp("<.+><.+-(.+)\"></i></div>"
,"$1q"
,"noq"
,1
,14
,"<.+>Datentabelle 1</h3>"
,"<.+>Datentabelle 2</h3>");
Schreiben Sie in einem solchen Fall in HTML
Datentabelle 1
Von
Datentabelle 2
Mit Elementen bis zu
<.+><.+-(.+)\"></i></div>
Was trifft den regulären Ausdruck von
$1q
Ersetzen durch ($ 1 ist das Ersetzungssymbol nach einem Treffer beim Ersetzen eines normalen Ausdrucks. Der Treffer in Klammern wird so wie er ist als Element behandelt.
Wenn keine Daten vorhanden sind
noq
Dies ist ein Prozess zum Verschieben des Speicherorts der Datenzelle, wenn es sich bei der späteren Verarbeitung um eine Leerzeile handelt.
Danach wird ein Komma hinzugefügt und der Vorgang beendet. Selbst wenn die Formate von Daten 1 und Daten 2 gleich sind, können vorteilhafterweise korrekte Daten korrekt erhalten werden.
grobal
ArrayList<String> list = new ArrayList<String>();
String all = "";
String qq = "qqqqqqqqq"; //Eine Saite, die nicht trifft
public static void add_all(String index){
all = all + index + kn;
//kn ist ein Datenbegrenzer beim Hinzufügen von Daten beim Debuggen"\n"Zum Zeitpunkt der Veröffentlichung","Empfohlen
}
over
//Überladung mit weniger Argumenten
//qq ist eine Zeichenfolge, die nicht zu treffen scheint
//Suchen Sie immer nach einem Element, wenn es drei Argumente gibt
public static void sp(String be,String af,String no){
int s = 1; int num =1;
sp(be,af,no,s,num,qq,qq);
}
public static void sp(String be,String af,String no,int s,int num){
sp(be,af,no,s,num,qq,qq);
}
sp
public static void sp(String be,String af,String no,int s,int num ,String be_set,String af_set){
int i;
boolean be_flag = false;
boolean af_flag = false;
boolean cutset = false;
//Wenn das Start- / End-Flag nicht eingegeben wird, führen Sie eine vollständige Suche durch.
if(be_set.equals(qq) && af_set.equals(qq)){
be_flag=true;
}
//Wenn die Anzahl der Suchtreffer eins beträgt, ist eine Hochgeschwindigkeitsverarbeitung mit dem Cutset-Flag möglich.
if(s ==1 && num ==1){
cutset = true;
}
ArrayList<String> save = new ArrayList<String>();
save.clear();//Ich brauche es nicht, aber vorerst
//Wiederholen Sie diesen Vorgang für die Listengröße
for(i = 0;i < list.size();i++){
//Listendaten abrufen
String line = list.get(i);
//Flag-Betrieb starten
if(line.matches(be_set)){
be_flag=true;
}
//Flag-Operation beenden
if(line.matches(af_set) && be_flag){
break;
}
if(line.matches(be) && be_flag){
line = line.replaceAll(be,af);
save.add(line);
deb(0,line);
//Ziel ist es, die Verarbeitung zu beschleunigen, wenn nur eine Daten durchsucht werden
if(cutset){
String tem = save.get(0);
add_all(tem+",");
return;
}
}
}
//Nach dem Lesen aller Daten
//Wenn es keinen Treffer gab
//Die Daten nach dem Austausch""Wenn nicht, fügen Sie das Argument Nr
if(save.size() == 0){
if(!no.equals(""))add_all(no);
//Wann nicht
}else{
//Ausnahmebehandlung: Richten Sie die Anzahl der Eingaben und die Anzahl der Treffer aus
if(save.size() < num){
num = save.size();
}
if(save.size() < s){
s = save.size();
}
//Fügen Sie allen nur den im Argument angegebenen Betrag hinzu
for(i=0;i<num;i++){
String tem = save.get(s+i-1);
add_all(tem);
}
}
//Nach der Datenreflexion durch Kommas getrennt
if(!no.equals(""))add_all(",");
}
Dies ist das Ergebnis des Hinzufügens dessen, was ich brauche, ohne über die Struktur nachzudenken, aber für mich ist es nicht schlecht. Ich habe dies verwendet, um Daten aus HTML zu lesen. Ich denke, es ist in Ordnung, die Python-Bibliothek zu verwenden, aber ich habe dieses Format verwendet, weil es nicht lange dauerte, bis ich auf die Idee kam.
Recommended Posts