Java codeimport java.util.regex.*;
public class Test{
public static void main(String args[]) {
String str="//package java.ts.code;\n"
+"package java.ts.code;\n"
+"import java.util.regex.*;\n "
+"import java.util.*;\n"
+"//public class Test\n"
+"public class Test extends MyClass{ \n"
+"public static void main(String args[]) {\n"
+" String str=\"packege org.myfile\"\n"
+".....";
System.out.println("Packege name: "+getPackage(str));
System.out.println("Public class name: "+getPublicClass(str));
}
//下面的两个方法有一定的局限性,要求package语句和public class语句是一行的开始.
//也就是说,语句之前可以有空白字符,但不能有注释.比如:/*abc */package abc,这样是提不出来的.
//
public static String getPackage(String fileStr){
String regex="(?im)^\\s*package\\s+([^;]+);";
Matcher m=Pattern.compile(regex).matcher(fileStr);
if(m.find()){
return m.group(1).trim();
}
return "";
}
public static String getPublicClass(String fileStr){
String regex="(?m)^\\s*public\\s+class\\s+(\\w+)\\b";
Matcher m=Pattern.compile(regex).matcher(fileStr);
if(m.find()){
return m.group(1).trim();
}
return "";
}
}