0

嗨,下面是我的文本文件

welcome to java training

     program

Name    rtrti*&*
  John

address     india   say^%$7
Date of Birth
11/12/1989

我有 100 个像上面这样的文件。上面的文本是从图像文件中提取的文本,所以它不是按顺序排列的,我需要从中获取姓名和出生日期,你能建议我怎么做吗,我是新人到这个任务。

所需输出

John
11/12/1989

我努力了

Pattern p = Pattern.compile("Name");
Matcher matcher = p.matcher(content);
matcher.find();

但是我知道如何获得下一行匹配的模式,我不能逐行读取这个文件,因为我需要将整个文本存储在一个字符串中。

4

1 回答 1

1

我会给出一些提示,让你走上正轨。如果没有有关预期输入的更多详细信息,将很难为您提供可靠的解决方案。首先,我相信您已经熟悉PatternMatcher javadocs。您将需要了解组和捕获部分。最后,您可以使用允许字符匹配换行符 的DOTALL模式。.

为了让您开始,以下应该可以找到名称:

Pattern p = Pattern.compile(
    "(?s)"      + // DOTALL
    ".*"        + // Match anything (to consume everything before 'Name')
    "Name"      + // Match the literal 'Name'
    ".*?"       + // Reluctantly grab everything until...
    "\n"        + // Newline is reached
    "\\s*"      + // Consume leading whitespace
    "(\\S+)"      // Capture at least one non-whitespace character
);
Matcher m = p.matcher(content);

if(m.find()) {
    String name = m.group(1);  // The first capturing group contains "John"
}
于 2013-09-23T14:07:47.953 回答