【问题标题】:Java: Regular Expression for FTP server list?Java:FTP服务器列表的正则表达式?
【发布时间】:2012-07-02 02:07:01
【问题描述】:

我正在用 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

虽然我只需要文件/目录的名称和大小。

请建议我一种方法来减少列表的名称和大小,记住列之间的间距差异和文件名中的间距。

提前谢谢大家:)

【问题讨论】:

  • 为什么要撤消我的所有编辑?我试图让它更具可读性。
  • 抱歉,我实际上是在发布后编辑我的帖子,所以可能会有一些冲突,但我仍然可以看到您的编辑......谢谢

标签: java ftp ftp-client ftp-server


【解决方案1】:

既然你只是想抓取数据,你可以使用这个正则表达式:

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

并构造一个Pattern,得到一个与输入字符串对应的Matcher,开始提取匹配。大小可以在group(1)获取,文件名可以在group(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));
    }

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

【讨论】:

  • 谢谢哥们,也很有帮助
猜你喜欢
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
相关资源
最近更新 更多