Java regex - 从匹配文本中获取行号

new*_*bie 0 java regex

这是基于我之前的问题

对于我的情况,我想从正则表达式模式中获取行数。例如:

name : andy
birth : jakarta, 1 jan 1990
number id : 01011990 01
age : 26
study : Informatics engineering
Run Code Online (Sandbox Code Playgroud)

我想从与 number 匹配的文本中获取行数[0-9]+。我希望输出像这样:

line 2
line 3
line 4
Run Code Online (Sandbox Code Playgroud)

sdc*_*sdc 5

这会为你做的。我将正则表达式修改为".*[0-9].*"

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
import java.util.regex.Pattern;
import java.util.concurrent.atomic.AtomicInteger;

class RegExLine 
{
    public static void main(String[] args) 
    {
        new RegExLine().run();
    }

    public void run()
    {
        String fileName = "C:\\Path\\to\\input\\file.txt";
        AtomicInteger atomicInteger = new AtomicInteger(0);
        try (Stream<String> stream = Files.lines(Paths.get(fileName))) 
        {
            stream.forEach(s -> 
            {
                atomicInteger.getAndIncrement();
                if(Pattern.matches(".*[0-9].*", s))
                {
                    System.out.println("line "+ atomicInteger);
                }
            });
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)