是否可以检查文本是否与正则表达式的一部分完全匹配?
我希望匹配作为(可能)匹配文字前缀的文字。
因此,例如,我有一个以下的正则表达式:
/etc/tomcat/conf/.*
我希望匹配目录/etc/tomcat/conf/
中的所有文件。我可以通过匹配我的正则表达式的完整文件名来做到这一点。但我首先需要输入该目录,因此我想检查是否需要在第一行输入/etc
和/etc/tomcat
。
一般情况下是否可以实现?匹配文件的正则表达式将来自外部系统,因此我可以在表单中获得正则表达式:
/et..tomcat/con.*
如果我正确理解正则表达式计算机,则应该可以,因为/et..tomcat/
将与agaist /etc/tomcat/
匹配,但匹配将为负,因为文本将在那一刻和部分{ {1}}不满意。我只需要访问内部信息,文本已被完全消耗,但正则表达式不是......
Java提供了检查的方法吗?
答案 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-
}
}
虽然没有例外的更多代码可能值得付出努力。