我遇到此代码的问题: 由于某种原因,它始终无法匹配代码。
for (int i = 0; i < pluginList.size(); i++) {
System.out.println("");
String findMe = "plugins".concat(FILE_SEPARATOR).concat(pluginList.get(i));
Pattern pattern = Pattern.compile("("+name.getPath()+")(.*)");
Matcher matcher = pattern.matcher(findMe);
// Check if the current plugin matches the string.
if (matcher.find()) {
return !pluginListMode;
}
}
答案 0 :(得分:2)
现在我们只能猜测,因为我们不知道name.getPath()
可能会返回什么。
我怀疑它失败了,因为该字符串可能包含在正则表达式中具有特殊含义的字符。再次尝试使用
Pattern pattern = Pattern.compile("("+Pattern.quote(name.getPath())+")(.*)");
然后看看会发生什么。
同样,(.*)
部分(甚至是name.getPath()
结果周围的括号)似乎根本不重要,因为您没有对匹配结果本身做任何事情。在这一点上,问题是你首先使用正则表达式的原因。
答案 1 :(得分:2)
你真正需要的是
return ("plugins"+FILE_SEPARATOR+pluginName).indexOf(name.getPath()) != -1;
但是你的代码也没有意义,因为没有办法让for
- 循环进入第二次迭代 - 它无条件地返回。所以你可能需要这样的东西:
for (String pluginName : pluginList)
if (("plugins"+FILE_SEPARATOR+pluginName).indexOf(name.getPath()) != -1)
return false;
return true;