Java中的等效findAll python方法

时间:2018-07-31 09:51:16

标签: java python methods findall equivalent

我想知道在Java中是否有等效的python方法findAll。我经常逐行读取文件,以检查该行是否与正则表达式匹配。因此,如果在python中,我可以这样做:

mingw64/libexec/git-core/git-rebase--interactive: line 267:
C:/Program Files/WindowsApps/ActiproSoftwareLLC.XXXX/CodeWriter.exe: Permission denied
Could not execute editor

在Java中有类似的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用java8流api。

List<String> strings = null; 
try(Stream<String> lines = Files.lines(Paths.get("/path/to/file"))) {
    strings = lines
        .filter(line -> line.matches("some pattern"))
        .collect(Collectors.toList());
}

如果您不想使用try块,则可以使用(这将读取内存中的所有文件行)

List<String> strings = Files
    .readAllLines(Paths.get("/path/to/file"))
    .stream()
    .filter(line -> line.matches("some pattern"))
    .collect(Collectors.toList());

答案 1 :(得分:1)

嗯,Java中没有这样的方法。但是您可以使用类似下面的代码;

        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("regex pattern");

        try(BufferedReader reader = new BufferedReader(new FileReader(new File("file path")))) {
            reader.lines().forEach(line -> {
                java.util.regex.Matcher matcher = pattern.matcher(line);
                if (matcher.find()) {
                    String gr = matcher.group(1); // Depends on the regex provided. Better if it could be grouped.
                }
            });
        }