我正在做一个项目,我必须解析文本文件并从中提取相关信息以备日后使用。
我创建了一个正则表达式来匹配具有相关数据的文本行,但我不确定如何从该行中提取相关信息并将其转储到新的文本文件中。
这是我正在解析的文本文件中的示例:
[ 5] local 10.170.150.195 port 42507 connected with 184.72.63.139 port 5001
[ 4] local 10.170.150.195 port 42506 connected with 184.72.63.139 port 500
[ 1] 0.0- 1.0 sec 0.00 KBytes 50.00 Kbits/sec
在此示例中,相关信息为“0.0- 1.0 秒”和 50.00 Kbits/秒。
这是我的正则表达式:
[ [0-6]] 0.0- 1.0 sec 0.00 KBytes [0-9]*.[0-9][0-9] Kbits/sec
抱歉,如果这是一个微不足道的问题,我对 Java 还很陌生...这是第 3 天... 我们将不胜感激任何帮助。
谢谢
最佳答案
您将使用括号来捕获所需的组,然后将这些组打印到输出。
Pattern pattern = Pattern.compile("\\[ [0-6]\\] (0.0- 1.0 sec) 0.00 KBytes ([0-9]*.[0-9][0-9] Kbits/sec)");
String line = "[ 1] 0.0- 1.0 sec 0.00 KBytes 50.00 Kbits/sec";
Matcher matcher = pattern.matcher(line);
if (matcher.matches()) {
System.out.println(matcher.group(1) + "\t" + matcher.group(2));
}
这里的 pattern
对象是您的正则表达式,您可以在所有行中重复使用它。对于文件的每一行,您都创建一个新的 matcher
并将该行传递给它。然后,如果该行与正则表达式匹配,则打印捕获组。
关于java - 如何将正则表达式的一部分打印到 .txt 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870314/