Приведу пример:
String string1 = "Owner=John Pet=Dog City=NY";
String string2 = "Owner=Steve Pet=Cat City=LA";
String string3= "Owner=Paul Pet=Hamster City=LS";
List<String> strings = new ArrayList<String>();
strings.add(string1);
strings.add(string2);
strings.add(string3);
Могу ли я как-то (с помощью регулярного выражения), вытащить все типы животных опираясь на ключевое слово "Pet"? Если нет, то какой подход лучше использовать в регулярке? Спасибо.
Для варианта с названием из нескольких слов
(?<=Pet=)[\w ]+(?<![ City])
В Java будет:
Matcher m = Pattern.compile("(?<=Pet=)[\w ]+(?<![ City])").matcher(str);
if (m.find()){
String pet = m.group();
}
Но надежней и быстрее в общем случае будет спарсить всю строку, а значения взять из групп.
Matcher m = Pattern.compile("Owner=(.*) Pet=(.*) City=(.*)").matcher(str);
if (m.find()){
String owner = m.group(1);
String pet = m.group(2);
String city = m.group(3);
}
Pet=(\w+)
Первая группа вернет Dog, Cat, Hamster и тд
Вариант с позитивным просмотром назад:
(?<=Pet=)\w+
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мне нужно с помощью регулярки образать все нули спереди, и один ноль в концеНаписал вот такую регулярку, но она работает не правильно str
Получаю объект с сервера и записываю его в состояние, но когда выбираю значение его элемента - Cannot read property 'id' of undefinedОбъект выглядит вот так: