我希望从完全限定的类名中清除除类名之外的所有内容。所以,我可能有类似的东西......
"class gqlMain.Node"
......我想结束......
"Node"
...我很确定我的模式...
"*.[\\.][^\\.]*"
..是正确的,如果只是像上面那样运行它并使用...进行测试
myMatcherObject.matches()
...它总是返回 true,但是当我尝试添加分组时,比如...
"(.*[\\.])([^\\.]*)"
...我总是得到找不到匹配的错误。不知道发生了什么。
添加:
感谢您的快速回复,伙计们。是的,我真的不明白这个。我的确切代码是....
public String toString() {
Pattern packagePatt = Pattern.compile("(.*[\\.])([^\\.]*)");
//
System.out.println(this.compClass.getName().toString());
Matcher packageMatch = packagePatt.matcher(this.compClass.getName().toString());
//
System.out.println(packageMatch.group(2));
return packageMatch.group(2);
}
例如,第一个打印语句会生成一个类似“gqlMain.Node”的字符串(我知道 toString() 是多余的,我出于恼怒添加了它)。第二个 print 语句会产生错误,return 语句也会产生错误。使用调试器,我可以看到 Matcher 对象的组列表在每个索引处都为空。但是如果我插入一个...
if (packageMatcher.matches()) {
// print true
}
...我总是得到“真实”。这真的没有意义。