日期:2014-05-20  浏览次数:20806 次

不以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));