如果正则表达式模式在Java中匹配,则提取文件的下一行数据

时间:2017-04-28 14:32:06

标签: java regex

如果正则表达式模式与Java匹配,我想提取文本文件的下一行数据。我能够检测并匹配文本文件中的模式数据,但无法打印下一行模式数据。

测试数据:

*** Explorer
GenV Deno Znet

用于匹配资源管理器的正则表达式

[*\\+]+[\\s+]+[Explorer]+[:]

如果找到*** Explorer模式,请帮助我了解如何获取下一行。

3 个答案:

答案 0 :(得分:0)

您可以将此正则表达式与捕获组一起用于搜索模式后的下一行:

[*]+\s+Explorer\R(.*)

在第1组

中捕获下一行

正则表达式分手:

  • [*]+\s+Explorer - 符合您的搜索模式
  • \R - 匹配任何换行符
  • (.*) - 匹配并捕获第1组
  • 中的整行

在Java中使用:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "[*]+\\s+Explorer\\R(.*)";
final String input = "*** Explorer\nGenV Deno Znet";

final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(input);

while (matcher.find()) {
    System.out.println("match: " + matcher.group(1));
}

RegEx Demo

答案 1 :(得分:0)

您可以使用:

[*\s]+Explorer\n(.*?)$

enter image description here

Regex Demo

答案 2 :(得分:0)

嗯,首先,正则表达式不会匹配" ***资源管理器"

它将匹配" ***资源管理器:"

如果这是java,你不能阅读下一行吗?

        while ((lineText = lineReader.readLine()) != null) {
            hasMatch = lineText.matches(regex);
            if(hasMatch) {
                lineText = lineReader.readLine();
                System.out.println(lineText);
            }
        }

适合我。