Вы можете использовать регулярное выражение, например
List<String> result = new ArrayList<>();
Matcher m = Pattern.compile("@@_\\S*?_@@").matcher(searchText);
while (m.find()) {
result.add(m.group(0));
}
@@_\S*?_@@
будет соответствовать @@_
, затем любые 0 или более непробельных символов должны быть как можно меньше, а затем _@@
.
См. Демонстрационную версию regex и демонстрационную версию Java .
. Вы можете рассмотреть разбиение на пробелы, а затем получить любой элемент из полученного массива, который начинается с @@_
и заканчивается _@@
:
import java.util.stream.Collectors;
// ...
List<String> result = Arrays.stream(searchText.split("\\s+"))
.filter(i -> i.startsWith("@@_") && i.endsWith("_@@"))
.collect(Collectors.toList());
См. демонстрационную версию Java .