【发布时间】:2015-08-02 12:07:31
【问题描述】:
我想从一个字符串中获取类名。例如public class hello extends jframe。然后我想得到hello作为类名。但是如果String是public class hello,我也想得到hello。
我写了一个正则表达式,它工作正常。 see here online preview.
这是我的正则表达式
(public)*\s*class\s+(\S+)\s+
预览
如您所见,它可以工作..它捕获类名。 (红色 -> 第 2 组)
但在java中m.matches()返回false,因为整个字符串不匹配,而是一部分。所以根据this answer,我使用hitEnd()方法,但它也不起作用??当甚至字符串完全不匹配但部分匹配时,我如何捕获类名
String cstring = "public class hello extends jframe ";
Pattern classPattern = Pattern.compile("(public)*\\s*class\\s+(\\S+)\\s*");
Matcher m = classPattern.matcher(cstring);
m.matches();
if (m.hitEnd()) {
System.out.println("found");
String className = m.group(2);
System.out.println(className);
}
输出什么都不是。
【问题讨论】: