Java 如何提取下面的数据并显示在另一个文件中

Java 如何提取下面的数据并显示在另一个文件中,java,text,weka,Java,Text,Weka,我在机器学习的文本文件中得到了这个结果,我如何只能在另一个文本文件或任何文件中显示这些数据: L=40 i:Classifier_name=meka.classifiers.multilabel.BR i:Classifier_ops=[-W, weka.classifiers.rules.ZeroR] i:Classifier_info= i:Dataset_name=PlainAbstractsBehavioralDomainLabels i:Type=ML i:Threshold=0.22

我在机器学习的文本文件中得到了这个结果,我如何只能在另一个文本文件或任何文件中显示这些数据:

L=40
i:Classifier_name=meka.classifiers.multilabel.BR
i:Classifier_ops=[-W, weka.classifiers.rules.ZeroR]
i:Classifier_info=
i:Dataset_name=PlainAbstractsBehavioralDomainLabels
i:Type=ML
i:Threshold=0.2289156626506024
i:Verbosity=1
v:N_train=247.0
v:N_test=3.0
v:LCard_train=1.8461538461538463
v:LCard_test=0.0
v:Build_time=2.79
v:Test_time=0.005
v:Total_time=2.795
[0, 0, 0]:[0.05622489959839357, 0.012048192771084338, 0.08433734939759036]
[0, 0, 0]:[0.05622489959839357, 0.012048192771084338, 0.08433734939759036]
[0, 0, 0]:[0.05622489959839357, 0.012048192771084338, 0.08433734939759036]

我不是
RegEx
方面的专家,因此如果专家们能纠正我的模式,那就太好了,但以下代码至少可以正常工作:

1. 0.05622489959839357, 0.012048192771084338, 0.08433734939759036
2. 0.05622489959839357, 0.012048192771084338, 0.08433734939759036
3. 0.05622489959839357, 0.012048192771084338, 0.08433734939759036
因此,即使我将以不同的长度处理以下行:

FileInputStream fileInputStream = new FileInputStream("data.txt");
File outputFile = new File("out.txt");
PrintWriter writer = new PrintWriter(outputFile, "UTF-8");
BufferedReader bf = new BufferedReader(new InputStreamReader(fileInputStream));
int count = 1;
String out;
Pattern pattern = Pattern.compile(":\\[((\\d\\.\\d+(,\\s)?){0,4})\\]$");

while ((out = bf.readLine()) != null){
    Matcher matcher = pattern.matcher(out);
    if (matcher.find()){
        String capture = count + ". " + matcher.group(1);
        writer.println(capture);
        System.out.println(capture);
        count++;
    }
}
fileInputStream.close();
writer.close();
输出将是:

[0, 0, 0]:[0.05622489959839357, 0.012048192771084338, 0.08433734939759036, 0.55]
[0, 0, 0]:[0.05622489959839357, 0.012048192771084338, 0.08433734939759036]
[0, 0, 0]:[0.05622489959839357, 0.012048192771084338, 0.08433734939759036]

显示在另一个文件中
是否要将此文本写入文件?你被困在哪里了?也许这能帮上忙:。否则,您应该明确使用代码示例进行什么处理或实现什么。所以不是一个家庭作业网站。@donfuxx,是的,我想把这些行放到一个文本文件中。我被困在提取几行和特定的专栏谢谢你,尼基斯。Nikis,这个方法很好,但是如果我想改变[0,0,0]:[0.05622489959899839357,0.012048192771084338,0.08433734939759036]到[0,0,0]:[0.056224899959839357,0.01204819277108438,0.08433734939759036,0.212121,21],我必须更改代码:Pattern=Pattern.compile(“:\[(\\d\\.\\d+,\\d\.\\d+,\\d\.\\d+),\\d\.\\d+\]$”;这不是更有效,对吗?@在这种情况下登录模式将是
:\\[(\\d\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。现在它处理长度为0到4的浮点数组。Nikis,我检查了您的更新答案,该字符串中有一个小错误(“:\[(\\d\\.\\d+(,\\s)?{0,4})\]$”),您应该删除这对“”
1. 0.05622489959839357, 0.012048192771084338, 0.08433734939759036, 0.55
2. 0.05622489959839357, 0.012048192771084338, 0.08433734939759036
3. 0.05622489959839357, 0.012048192771084338, 0.08433734939759036