检查整个文本是否与正则表达式的一部分匹配?

时间:2017-09-06 11:52:32

标签: java regex

是否可以检查文本是否与正则表达式的一部分完全匹配?

我希望匹配作为(可能)匹配文字前缀的文字。

因此,例如,我有一个以下的正则表达式:

/etc/tomcat/conf/.*

我希望匹配目录/etc/tomcat/conf/中的所有文件。我可以通过匹配我的正则表达式的完整文件名来做到这一点。但我首先需要输入该目录,因此我想检查是否需要在第一行输入/etc/etc/tomcat

一般情况下是否可以实现?匹配文件的正则表达式将来自外部系统,因此我可以在表单中获得正则表达式:

/et..tomcat/con.* 

如果我正确理解正则表达式计算机,则应该可以,因为/et..tomcat/将与agaist /etc/tomcat/匹配,但匹配将为负,因为文本将在那一刻和部分{ {1}}不满意。我只需要访问内部信息,文本已被完全消耗,但正则表达式不是......

Java提供了检查的方法吗?

1 个答案:

答案 0 :(得分:0)

只有过复杂的正则表达式。由于想要使用单个子目录,可以这样做:

Path full = Paths.get("/etc/tomcat/conf");

assert okay(full, Paths.get("/etc")); // -1-
assert !okay(full, Paths.get("/and/so/on")); // -2-

boolean okay(Path full, Path input) {
    try {
        input.relativize(full); // -1- "tomcat/conf"
        return true;
    } catch (IllegalArgumentException e) {
        return false; // -2-
    }
}

虽然没有例外的更多代码可能值得付出努力。