java - 如何将正则表达式的一部分打印到 .txt 文件中

标签 java regex text-files expression

我正在做一个项目,我必须解析文本文件并从中提取相关信息以备日后使用。

我创建了一个正则表达式来匹配具有相关数据的文本行,但我不确定如何从该行中提取相关信息并将其转储到新的文本文件中。

这是我正在解析的文本文件中的示例:

[  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/

相关文章:

部分名称/内容文本需要 Java 文本解析帮助

java - ListView显示txt文件中的联系人-Android Studio

java - StringSpacer 方法中出现空指针异常错误

java - Spring CrudRepository findByInventoryIds(List<Long> inventoryIdList) - 相当于 IN 子句

c++ - 如何使用正则表达式查找 C 文件中的所有数组声明?

c# - 列表中的项目计数未按预期工作

java - 在Java中读取文本文件

java - 如何使用全局二级索引的分区键更新项目

java - Spring boot 返回 400 缺少构造函数,没有堆栈跟踪

regex - 使用 maven-replacer-plugin 选择性替换正则表达式