有 Java 编程相关的问题?

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

Java正则表达式模式编译最佳实践(使用enum)

我试图创建一个包含正则表达式字符串的枚举,同时确保模式只编译一次,因为pattern compilation is expensive和我确实多次重复使用同一模式。我试图根据所选枚举的类型实现一个动态编译的模式对象。然而,我被以下问题困住了。有谁能提供一些指导,或者提出一个更好的方法来实现这一点

public enum LOG_SCANNER{
    FOO_STRING(".*XXXX$"),
    BAR_STRING(".*YYYY.*"),
    ;

    static Pattern p;
    static {
        p = Pattern.compile(regex); // Compilation failes here

    }


    String regex;
    private LOG_NAME_MATCHER(String regex) {
        this.regex = regex;
    }


}

编辑: 请注意,我没有使用正则表达式来搜索可以通过字符串实现的东西。endsWith()或。包含()。(“*XXXX$”)只是一个例子


共 (0) 个答案