当前位置: 代码迷 >> J2SE >> 不以import开头的代码行的正则表达式,该如何处理
  详细解决方案

不以import开头的代码行的正则表达式,该如何处理

热度:22   发布时间:2016-04-24 01:56:28.0
不以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));