J'essaie de trouver une expression régulière dans une ligne d'un fichier .csv, de sorte que je puisse éventuellement sauvegarder toutes les correspondances dans un autre fichier et perdre toutes les autres données indésirables.Imprimer une chaîne qui contient un certain modèle en Java
donc une ligne dans mon dossier pourrait ressembler à: MachineName, utilisateur, IP, variableData, Emplacement
Le variableData est ce que je veux correspondre, et s'il y a un match, imprimer la ligne. J'utilise un motif pour cela parce que je veux seulement 3 variations de VariableData sur 10, et sur ces 3, elles sont numérotées différemment (par exemple, "pc104, pccrt102, pccart65"). J'essaie de le faire en utilisant la classe Scanner et de le garder aussi simple que possible afin que je puisse le comprendre. Voici où je me dirigeais avec ça ... (le motif n'est pas complet, juste comme ça pour tester).
import java.io.File;
import java.util.Scanner;
import java.util.regex.Pattern;
public class pcv {
public static void main(String[] args) {
File myFile = new File("c:\\temp\\report.csv");
Pattern myPat = Pattern.compile("pc");
try{
Scanner myScan = new Scanner(myFile);
while(myScan.hasNext()){
if(myScan.hasNext(myPat)){
System.out.println("Test");
}
}
}catch(Exception e){
}
}
}
Cette boucles code, im deviner les méthodes .hasNext() sont eux-mêmes la réinitialisation. J'ai un peu joué avec la classe Matcher, mais j'ai seulement trouvé un moyen de faire correspondre l'expression mais pas la ligne entière.
Mon autre chemin était peut-être de compter la ligne qui contient le motif, puis de revenir en arrière et d'imprimer la ligne qui correspond aux comptages.
Je connais sa sémantique, mais n'est-ce pas _match_ le motif, pas _contain_ it? –