Java - Regex для получения значения после определенной строки

Я пытаюсь получить значение в кавычках для конкретной строки
Например, для ключа IsEmployee мне нужно получить значение «Да».

id: '1234', Заработная плата: '200000', Год: '2018', IsEmployee: 'Да'
может ли кто-нибудь поделиться любым образцом регулярного выражения для этого

Это файл JSON?

ctwheels 05.04.2018 16:41

нет. Это просто нить.

user1514499 05.04.2018 16:42

Хорошо, а что насчет \bIsEmployee:'([^']+)'?

ctwheels 05.04.2018 16:42

Что ты пробовал? Разместите код / ​​регулярное выражение и объясните, что он возвращает, и что вы ожидаете от него.

Philipp Reichart 05.04.2018 17:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
376
3

Ответы 3

Вроде формат JSON, правда, в виде строки. Используйте парсер JSON для большей гибкости, чтобы получить любое значение по ключам или распечатать все

Это просто строка. Не json

user1514499 05.04.2018 17:23

Попробуй это

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


public class RegexpApp {

    public static void main(String[] args){
        String val = "id:'1234',Salary:'200000',Year:'2018',IsEmployee:'Yes'";
        System.out.println(getValue(val, "id"));
        System.out.println(getValue(val, "Year"));
        System.out.println(getValue(val, "IsEmployee"));

    }

    public static String getValue(String testStr, String key){
        Pattern p = Pattern.compile("\\b"+key+"[ ]*:[ ]*'(.+?)'");
        Matcher m = p.matcher(testStr);
        return  m.find() ? m.group(1): null;
    }
}

Вы можете использовать следующее регулярное выражение:

(?i)(?<=isemployee:')[^']*

Нажмите для демонстрации

Объяснение:

  • (?i) - делает регулярное выражение нечувствительным к регистру
  • (?<=isemployee:') - положительный просмотр назад, чтобы найти должность, которому только что предшествует isemployee:'
  • [^']* - соответствует 0+ вхождений любого символа, кроме '. Короче говоря, он соответствует всему, пока следующий ' не будет найден в строке

Код: ВЫХОД.

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

class Rextester
{  
    public static void main(String args[])
    {
        final String regex = "(?i)(?<=isemployee:')[^']*";
        final String string = "id:'1234',Salary:'200000',Year:'2018',IsEmployee:'Yes'";

        final Pattern pattern = Pattern.compile(regex);
        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));
            }
        }
    }
}

Другие вопросы по теме