Как обрезать несколько текстов из строки в Java?

#java #regex #string #substring

#java #регулярное выражение #строка #подстрока

Вопрос:

Я хочу обрезать часть строки:

 " this is Test [ABC:123456] Sting with multiple properties [ABC:98765] ..."
 

Итак, в результате я хочу обрезать строку между «[]». {Здесь ABC: 12345 и ABC: 98765}
Обратите внимание, что может быть n количество свойств.
каков наилучший способ получить результат.

Комментарии:

1. Что вы подразумеваете под обрезкой? Извлечь его или удалить?

2. Я бы предположил, что регулярное выражение и групповой захват.

3. Да, я хочу извлечь строку между []

Ответ №1:

 public static void main(String[] args) {
        String input = "test bla [ABC56465:asd] asdasdqwd [DEF:345]";
        Pattern pattern = Pattern.compile("\[(.*?)\]");
        Matcher match = pattern.matcher(input);
        while(match.find()){
            System.out.println(match.group());
        }
    }
 

Следуйте инструкциям Niels. Это может быть решением.
Чтобы получить вывод без «[]», просто замените:

 System.out.println(match.group());
 

С:

 System.out.println(match.group(1));
 

как упоминалось в комментариях.

Комментарии:

1. Вызовите match.group(1) вместо match.group() , если вы хотите захватить группу без квадратных скобок.

Ответ №2:

Вам нужно определить свой шаблон и выполнить сопоставление регулярных выражений, выделив нужную вам группу.

См. http://tutorials.jenkov.com/java-regex/matcher.html

для получения руководства по регулярным выражениям. (Особенно разделы find() start() и end())

В вашем случае схема должна быть очень простой.

Ответ №3:

В Java вы можете сделать это:

 String resultString = subjectString.replaceAll("\[[^\]]*\]", "");
 

Объяснение

  • [ соответствует открывающей скобке
  • Отрицаемый символьный класс [^]]* соответствует любому символу, который не является закрывающей скобкой
  • ] соответствует закрывающей скобке
  • Заменяем на пустую строку