有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:FTP服务器列表的正则表达式?

我正在用Java编写FTP客户端处理程序,不能使用像Apache这样的FTP库

我的问题是,我从服务器收到的列表格式如下:

drw-rw-rw- 1 ftp ftp                0 Mar 17 06:10 Tor Browser
-rw-rw-rw- 1 ftp ftp          1538814 Jun 26 00:23 setup.exe
-rw-rw-rw- 1 ftp ftp           142570 May 24 05:28 satellite A665-S6086.pdf

而我所需要的只是文件/目录名和大小

请给我建议一种方法,将列表缩小到名称和大小,记住列之间的间距差异和文件名中的间距

提前谢谢大家:)


共 (2) 个答案

  1. # 1 楼答案

    由于您只想获取数据,因此可以使用以下正则表达式:

    "(?m)^.{20}\\s*(\\d+).{14}(.*)$"
    

    并构造一个Pattern,获得与输入字符串对应的Matcher,然后开始提取匹配项。大小可以在group(1)中获得,文件名可以在group(2)中获得

  2. # 2 楼答案

    使用

        Pattern sizeAndNamePattern = Pattern.compile(
                "^-.*?(\\d+) \\w{3} \\d{2} \\d{2}:\\d{2} (.*)$", Pattern.MULTILINE);
    
        for (Matcher matcher = sizeAndNamePattern.matcher(dirListing); matcher.find();) {
            System.out.println(matcher.group(1) + " " + matcher.group(2));
        }
    

    如果还想查看目录,请删除模式中的第一个“-”。如果性能是一个问题,你应该考虑一个更具选择性的模式来避免。一开始