Приведу пример:
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+
Продвижение своими сайтами как стратегия роста и независимости