我试图在 .csv 文件的一行中找到一个正则表达式,因此我最终可以将所有匹配项保存到另一个文件中,并丢失所有其他垃圾。
所以我文件中的一行可能如下所示:MachineName,User,IP,VariableData,Location
VariableData 是我要匹配的内容,如果匹配,则打印该行。我为此使用了一个模式,因为我只想要 VariableData 的 10 个变体中的 3 个,并且在这 3 个变体中,它们的编号不同(例如,“pc104、pccrt102、pccart65”)。
我正在尝试使用 Scanner 类来做到这一点,并尽可能保持简单,以便我能理解它。这是我的目标......(模式不完整,只需像这样进行测试)。
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){
}
}
}
这段代码循环,我猜 .hasNext() 方法正在重置自己。我已经玩了一点 Matcher 类,但只找到了一种匹配表达式但没有得到整行的方法。
我的另一个想法可能是以某种方式计算包含模式的行,然后返回并打印与计数相对应的行。