Grep определенной части строки

У меня есть строка типа:

[Something-26543] Done some quite heavy job here.

Может кто-нибудь посоветовать, есть ли способ найти только строку между квадратными скобками. До:

[Something-26543] Done some quite heavy job here.

После фильтрации:

Something-26543

person WhoAmI    schedule 29.03.2021    source источник
comment
Пожалуйста, добавьте код, который вы пробовали, и причину сбоя (например, ошибки, трассировки стека, журналы и т. д.), чтобы мы могли его улучшить.   -  person cfrick    schedule 29.03.2021
comment
Я не добавлял код, потому что вопрос в том, как это можно сделать. Эти вопросы запрещены?   -  person WhoAmI    schedule 29.03.2021
comment
Отвечает ли это на ваш вопрос? Поиск слов в строке в Java   -  person onkar ruikar    schedule 29.03.2021


Ответы (1)


самый простой способ сделать это - использовать регулярное выражение. В java должно быть что-то вроде этого. matcher.group(1) должен быть тем, что вы ищете. Этот код не тестировался, чтобы узнать больше о регулярном выражении, я использую этот сайт: https://regex101.com/

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example {
    public static void main(String[] args) {
        final String regex = "\\[(.*?)\\]";
        final String string = "[Something-26543] Done some quite heavy job here.";
        
        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        final Matcher matcher = pattern.matcher(string);
        
        while (matcher.find()) {
            System.out.println("Full match: " + matcher.group(0));
            
            for (int i = 1; i <= matcher.groupCount(); i++) {
                System.out.println("Group " + i + ": " + matcher.group(i));
            }
        }
    }
}
person Connor Stoop    schedule 29.03.2021
comment
regex101.com лучше всего подходит для этого - person IntoVoid; 29.03.2021
comment
но имейте в виду, что regex101 не на 100% такой же движок, как Java (я предпочитаю regexplanet.com) - person ; 29.03.2021