gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:04:39 24 4
gpt4 key购买 nike

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

我想匹配作为(可能)匹配文本前缀的文本。

例如,我有以下正则表达式:

/etc/tomcat/conf/.*

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

一般情况下可以实现吗?匹配文件的正则表达式将来自外部系统,因此我可能会得到以下形式的正则表达式:

/et..tomcat/con.* 

如果我正确理解正则表达式机器,这应该是可能的,因为 /et..tomcat/将与 /etc/tomcat/ 匹配,但匹配结果将为负,因为此时文本将和 con.* 部分不会满意的。我只需要访问内部信息,文本已完全消耗,但正则表达式不是......

Java 是否提供了检查方法?

最佳答案

只有一个过于复杂的正则表达式。由于我们的想法是选择单个子目录,因此可以这样做:

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-
}
}

尽管毫无异常(exception)地多一点代码可能是值得的。

关于java - 检查整个文本是否与正则表达式的一部分匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com