Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
262 views
in Technique[技术] by (71.8m points)

Java regex - get line number from matching text

It's based from my previous question.

For my case I want to get number of line from regex pattern. E.g :

name : andy
birth : jakarta, 1 jan 1990
number id : 01011990 01
age : 26
study : Informatics engineering

I want to get number of line from text that match of number [0-9]+. I wish output like this :

line 2
line 3
line 4
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This will do it for you. I modified the regular expression to ".*[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();
        }
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...