我有很多:
FooModel f = new FooModel();
..
Bar Model b = new BarModel();
我需要从Java源代码中检索任何模型对象,但我不想完成声明。我只想要对象宣言。
我尝试使用正则表达式(其中strLine是InputStreamReader中的String行):
String pattern = ".*Model (.+)";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(strLine);
if(m.find())
System.out.print(m.group(1) + "\n");
我能够获得实例化。但我会做同样的事情,但对于对象声明(在“=”之前)。
我该怎么做?
我可以做到
m.group(0).replace(m.group(1),"");
但它不是真正的正则表达式。
答案 0 :(得分:0)
(\\w+ \\w+)\\s*=.*new.*Model.*
答案 1 :(得分:0)
如果您在一行中有一个启动声明:
import java.util.regex.*;
class FindModel
{
public static void main(String[] args)
{
String s = " FooModel f = new FooModel();";
String pattern = "([^\\s]*?Model[^=]*)=";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(s);
if(m.find())
System.out.print(m.group(1) + "\n");
}
}
如果一行中有多个语句:
import java.util.regex.*;
class FindModel
{
public static void main(String[] args)
{
String s = " FooModel f = new FooModel();int i=0,j; BarModel b = new BarModel();";
String pattern = "([^;\\s]*?Model[^=]*)=.*?;";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(s);
while(m.find())
System.out.print(m.group(1) + "\n");
}
}
输出:
FooModel f
BarModel b