Lire des données texte HTML, lues avec java, après les avoir mises dans la liste Lisez les données String de la liste, remplacez-les par une expression régulière, traitez-les et enregistrez-les dans tous.
Traitement par lots d'un grand nombre de fichiers similaires L'ajout à la liste ligne par ligne de la lecture du fichier avec java est terminé.
Vous pouvez enregistrer des données bloquées dans la même expression régulière qu'une autre Prend en charge plusieurs hits Le nombre de données ne change pas en effectuant un traitement d'exception en l'absence de hit
Rechercher toutes les données de String dans la liste Lorsque les données souhaitées sont trouvées, elles sont remplacées et stockées dans tous (String). À partir de quel numéro stocker les données souhaitées Que faire quand il n'y a pas de données souhaitées peut être décidé par l'argument Aucune opération du tout lorsque "" À d'autres moments, le caractère spécifié est ajouté et séparé par des virgules.
argument | sens |
---|---|
be | String avant le remplacement de l'expression régulière |
af | Chaîne après remplacement d'expression régulière |
no | Chaîne de caractères non interceptée lors de la recherche |
s | À combien de hits pensez-vous? |
num | Combien de hits à penser |
be_set | Lancer la recherche après avoir frappé la chaîne de caractères saisie ici |
af_set | Termine la recherche lorsque la chaîne de caractères saisie ici est frappée |
--Pour tous les éléments de liste
--Pour tous les éléments de sauvegarde
call
sp("<.+><.+-(.+)\"></i></div>"
,"$1q"
,"noq"
,1
,14
,"<.+>Tableau des données 1</h3>"
,"<.+>Tableau des données 2</h3>");
Dans un tel cas, écrivez en HTML
Tableau des données 1
De
Tableau des données 2
Avec des éléments jusqu'à
<.+><.+-(.+)\"></i></div>
Ce qui frappe l'expression régulière de
$1q
Remplacer par ($ 1 est le symbole de remplacement après l'atteinte dans le remplacement d'expression normal. L'appel entre parenthèses est traité comme un élément tel quel.
Quand il n'y a pas de données
noq
Il s'agit d'un processus pour déplacer l'emplacement de la cellule de données s'il s'agit d'une ligne vide lors de son traitement ultérieur.
Après cela, une virgule est ajoutée et le processus se termine. Comme avantage, même si les formats des données 1 et des données 2 sont les mêmes, des données correctes peuvent être obtenues correctement.
grobal
ArrayList<String> list = new ArrayList<String>();
String all = "";
String qq = "qqqqqqqqq"; //Une chaîne qui ne frappera pas
public static void add_all(String index){
all = all + index + kn;
//kn est un délimiteur de données lors de l'ajout de données lors du débogage"\n"Au moment de la libération","conseillé
}
over
//Surcharge avec moins d'arguments
//qq est une chaîne qui ne semble pas frapper
//Recherchez toujours un élément lorsqu'il y a trois arguments
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;
//Si l'indicateur de début / fin n'est pas entré, effectuez une recherche complète.
if(be_set.equals(qq) && af_set.equals(qq)){
be_flag=true;
}
//Lorsque le nombre de résultats de recherche est de un, un traitement à grande vitesse est possible avec l'indicateur cutset.
if(s ==1 && num ==1){
cutset = true;
}
ArrayList<String> save = new ArrayList<String>();
save.clear();//Je n'en ai pas besoin, mais pour le moment
//Répéter pour la taille de la liste
for(i = 0;i < list.size();i++){
//Obtenir les données de la liste
String line = list.get(i);
//Démarrer l'opération de drapeau
if(line.matches(be_set)){
be_flag=true;
}
//Fin de l'opération de drapeau
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);
//Vise à accélérer le traitement lorsqu'une seule donnée est recherchée
if(cutset){
String tem = save.get(0);
add_all(tem+",");
return;
}
}
}
//Après avoir lu toutes les données
//Quand il n'y avait pas de coup
//Les données après remplacement""Sinon, ajoutez l'argument no
if(save.size() == 0){
if(!no.equals(""))add_all(no);
//Quand non
}else{
//Traitement des exceptions: aligner le nombre d'entrées et le nombre de hits
if(save.size() < num){
num = save.size();
}
if(save.size() < s){
s = save.size();
}
//Ajouter uniquement le montant spécifié dans l'argument à tous
for(i=0;i<num;i++){
String tem = save.get(s+i-1);
add_all(tem);
}
}
//Séparé par des virgules après la réflexion des données
if(!no.equals(""))add_all(",");
}
C'est le résultat d'ajouter ce dont j'ai besoin sans penser à la structure, mais pour moi, je pense que ce n'est pas mal. Je l'ai utilisé pour lire des données HTML. Je pense que c'est correct d'utiliser la bibliothèque python, mais j'ai pris ce format parce que je n'ai pas tardé à avoir l'idée.