我想在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