在Java中展开glob(通配符)

ZDNet软件频道 时间:2003-04-09 作者:翻译:Java研究组织-foosleeper |  我要评论()
本文关键词:javatips
编程中使用正则表达式越来越多,而glob表达式则越来越少。但不管怎样,Jakarta Original Reusable Objects (ORO)包含了一个GlobCompiler类来处理glob表达式。

编程中使用正则表达式越来越多,而glob表达式则越来越少。但不管怎样,Jakarta Original Reusable Objects (ORO)包含了一个GlobCompiler类来处理glob表达式。

Globbing这个名字古怪而著名,它指的是在DOS/UNIX上用通配符如*号来代表若干个文件。例如,d*.bat代表所有以d开头的批处理文件,又如*virus.exe代表所有名字以virus.exe结尾的可执行文件。

Jakarta ORO通过把glob语言翻译成正则表达式来实现globbing功能,所以在ORO中使用globbing系统和使用正则表达式是一样的。下面是例子:

import org.apache.oro.text.*;
import org.apache.oro.text.regex.*;

public class GlobTest {

    static public void main(String[] args) throws Exception {
        GlobCompiler compiler = new GlobCompiler();
        Pattern pattern = compiler.compile("*.exe");
        PatternMatcher matcher = new Perl5Matcher();
        if(matcher.matches("foo.exe", pattern)) {
            System.err.println("foo.exe matches");
        }
        if(matcher.matches("exe.bar", pattern)) {
            System.err.println("exe.bar");
        }
    }

}

PatternMatcher实际用了一个Perl5Matcher,因为glob模式是被翻译成Perl 5句法的。这个glob正好和foo.exe匹配,但它和exe.bar不匹配,所以输出的字符串是“foo.exe matches”。

在用户界面中加上globbing功能是很不错的,特别对命令行界面来说。很少用户懂得如何输入正则表达式,但简单的glob则许多人都乐于使用。



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134