正则表达式找到静态(非最终)变量

use*_*837 7 java regex eclipse

我正在尝试在Eclipse(Java)工作区中进行搜索,以查找非最终的静态变量的所有实例.

我尝试了各种正则表达式,但它们不会产生任何匹配.有人可以建议一个正则表达式匹配所有包含static和不包含的行final,而不是以{

关于不以a结尾的最后一部分{将消除静态方法.

一个例子:

public class FlagOffendingStatics {
  private static String shouldBeFlagged = "not ok";
  private static final String ok = "this is fine";
  public static void methodsAreOK() {

  }
}
Run Code Online (Sandbox Code Playgroud)

mat*_*t b 8

这种模式有效:

[^(final)] static [^(final)][^(\})]*$
Run Code Online (Sandbox Code Playgroud)

这是一个测试:

$ cat test.txt
private int x = "3";
private static x = "3";
private final static String x = "3";
private static final String x = "3";
private static String x = "3";
public static void main(String args[]) {
        blah;
}

$ grep "[^(final)] static [^(final)][^(\})]*$" test.txt
private static x = "3";
private static String x = "3";
Run Code Online (Sandbox Code Playgroud)

(我意识到这private static x = "3";不是有效的语法,但模式仍然可以.)

该模式占的事实final之前或之后出现static[^(final)] static [^(final)].该模式的其余部分[^(\})]*$旨在防止任何{字符出现在该行的其余部分中.

如果有人喜欢这样编写方法语句,那么这种模式将不起作用:

private static void blah()
{
     //hi!
}
Run Code Online (Sandbox Code Playgroud)