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

#java #regex

#java #регулярное выражение

Вопрос:

Я пытаюсь извлечь строковые значения из этой строки:

String str = "[{"name:"s2"},{},{"name":"f2"},{"name":"f2"},{},{"name":"l"}]";

Я использую регулярное выражение для извлечения «s2», «f2», «f2» и «l».

Я подумал о решении, определил регулярное выражение, чтобы найти строку, которая начинается с «:» кавычка и заканчивается кавычкой.

Я не очень хорошо знаком с регулярным выражением, но я предположил, что мое регулярное выражение будет выглядеть примерно так? ":".?""

     public static void main(String... args) {
        Pattern p = Pattern.compile(":".?"");

        String str = "[{"name:"s2"},{},{"name":"f2"},{"name":"f2"},{},{"name":"l"}]";

        Matcher m = p.matcher(str);
        System.out.println(str);
        while (m.find()) {
            System.out.println("groupe = "   m.group());
        }
    }
  

Спасибо за вашу помощь.

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

1. .? соответствует 1 или 0 символам.

2. Не ясен ли шаблон javadoc для класса? В нем подробно описаны все метасимволы, поддерживаемые классом. Вы не поняли объяснение того, что делает каждый символ?

Ответ №1:

Использование может использовать этот шаблон:

"(?<=:")[^"]*"

Смотрите демонстрацию