Как написать шаблон регулярного выражения для определения слов, начинающихся и заканчивающихся определенными символами

Я хочу найти слова, начинающиеся с @@_ и заканчивающиеся на _@@. Нужно написать его как java Regex Pattern.

Пример: abcd erhjr @@_dhsdj_@@ dshdgj andaj edwyhu @@_dgayw_@@ nssd.

Regex должен найти @@_dhsdj_@@ и @@_dgayw_@@.

Я пытался использовать ,

 Matcher m = Pattern.compile("@@_\b\S+?\b_@@").matcher(searchText);
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
1
0
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать регулярное выражение, например

List<String> result = new ArrayList<>();
Matcher m = Pattern.compile("@@_\\S*?_@@").matcher(searchText);
while (m.find()) {
    result.add(m.group(0));
}

@@_\S*?_@@ будет соответствовать @@_, затем любым 0 или более непробельным символам как можно меньшему количеству, а затем _@@.

См. демонстрация регулярных выражений и Демонстрация Java.

Вы можете рассмотреть возможность разделения с помощью пробелов, а затем получить любой элемент из результирующего массива, который начинается с @@_ и заканчивается на _@@:

import java.util.stream.Collectors;
// ...
List<String> result = Arrays.stream(searchText.split("\\s+"))
            .filter(i -> i.startsWith("@@_") && i.endsWith("_@@"))
            .collect(Collectors.toList());

См. Демонстрация Java.

Другие вопросы по теме