读书人

不以import开头的代码行的正则表达式,

发布时间: 2012-03-01 10:25:46 作者: rapoo

不以import开头的代码行的正则表达式
目标:匹配java文件中不以import开头的语句行
把下面这个正则表达式放到Eclipse的文件搜索框中,搜索Test.java,结果为空
^\s*(?<!\bimport\b).+\n

Java code
public class Test {    /**     * @param args     */    public static void main(String[] args) {//        ThreadFromRunnable tr = new ThreadFromRunnable();//        Thread thread = new Thread(tr);//        Thread thread2 = new Thread(tr);//        //        thread.start();//        thread2.start();                ThreadExtendsThread thread = new ThreadExtendsThread();        ThreadExtendsThread thread2 = new ThreadExtendsThread();        thread.start();        thread2.start();    }}

这个正则表达式为什么不能匹配任何一行?

[解决办法]
呵呵 同样问题等待回答
[解决办法]
(?!X) 专业名称为 Negative Lookahead,表示字符间缝隙后面不允许出现的字符,
即匹配字符间的缝隙,如果缝隙后的字符不是 X 的话,那这个缝隙就匹配成功。
举个例子,aab 和 aac,现有表达式 aa(?!b) 这时我们能匹配到的字符串是 aac,
因为 aa 的后面的缝隙之后不允许出现字符 b,因此只有 aac 进行了匹配。

下面的你就自己写吧。
[解决办法]
^[(?!)i(?!)m(?!)p(?!)o(?!)r(?!)t]+
[解决办法]
Java code
String s = "imsportada";        System.out.println(Pattern.matches("^(?:[^import]).*$", s)); 

读书人网 >J2SE开发

热点推荐