Я бы использовал String.split () , чтобы разбить строку на токены, а затем сравнить каждый из токенов с вашим «списком фильтров».
Даже если вы могли бы сделать это, используярегулярное выражение, это было бы гораздо менее простым imo.
Edit:
На самом деле, вам даже не нужно перебирать результаты.Вы могли бы потенциально разделить слова «фильтра».Например:
String[] results = s.split(" *if *| *else *| *[0-9]+ *| +");
Обратите внимание, что вам нужно было бы оставить пробел в выражении, поскольку я предполагаю, что вы не хотите, чтобы x <=
был единственным токеном в результатах.Кроме того, добавляя пробелы вокруг ключевых слов, вы не получите пустых строк в наборе результатов.