#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("\[[^\]]*\]", "");
Объяснение
[
соответствует открывающей скобке- Отрицаемый символьный класс
[^]]*
соответствует любому символу, который не является закрывающей скобкой ]
соответствует закрывающей скобке- Заменяем на пустую строку