Этот шаблон работает:
[^(final)] static [^(final)][^(\})]*$
Вот тест:
$ 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";
(я понимаю, что private static x = "3";
не является допустимым синтаксисом, но шаблон все еще в порядке.)
Шаблон учитывает тот факт, что final
может появляться до или после static
с [^(final)] static [^(final)]
. Остальная часть шаблона, [^(\})]*$
, предназначена для предотвращения появления любых символов {
в оставшейся части строки.
Этот шаблон не будет работать, однако, если кому-то нравится писать свои выражения метода следующим образом:
private static void blah()
{
//hi!
}