Grep конкретна част от ред [затворено]

Имам ред като:

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

Може ли някой да посъветва дали има начин да grep само линията между квадратните скоби. Преди:

[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) трябва да е това, което търсите. Този код не е тестван, за да науча повече за regex, използвам този сайт: 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