我想在Java中编写一个模式来匹配Java导入声明。Java进口声明正则表达式
例子:
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.InputFormat;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
// import org.apache.hadoop.mapreduce.Something;
/* import org.apache.hadoop.something.else; */
将匹配只有:
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.InputFormat;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
到目前为止,我有以下的正则表达式:
"[^A-Za-z0-9\\n]? *import(static|\\s)+[\\w.]*(\\*)?(\\s)*;"
但它不工作。例如:
import org.junit.Test;
import java.util.ArrayList;
/* The import name; lazily initialized; defaults to a unspecified,...
回报:
import org.junit.Test;
import java.util.ArrayList;
import name;
这是不对的。
“它不工作”是最糟糕的问题说明。什么不工作?你有误报吗?假阴性?它会崩溃吗?它运行时烧毁你的房子吗? – 2010-06-28 15:15:49
如果你打算做这样的事情,你确定Regex是答案吗?你确定某些词法分析器/解析器导向(比如javac这样做)会不会更容易? – corsiKa 2010-06-28 15:17:32
它比它应该更多。 – 2010-06-28 15:21:48