Код делает то что нужно, вроде
package com.javarush.task.task15.task1527;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Парсер реквестов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String url = reader.readLine();
Pattern patternParameters = Pattern.compile("(?<=[?&]).+?(?=[=&])");
Matcher matcherParameters = patternParameters.matcher(url);
while (matcherParameters.find()) {
String str = matcherParameters.group();
System.out.print(str + " ");
}
System.out.println();
Pattern patternObjects = Pattern.compile("(?<==).+?(?=(&|$))");
Matcher matcherObjects = patternObjects.matcher(url);
List<String> list = new ArrayList<>();
while (matcherObjects.find()) {
String str = matcherObjects.group();
list.add(str);
}
for (String s : list) {
Pattern patternNumbers = Pattern.compile("-?\\d*\\.?\\d+");
Matcher matcherNumbers = patternNumbers.matcher(s);
if (matcherNumbers.matches()) {
double value = Double.parseDouble(s);
alert(value);
} else {
alert(s);
}
}
}
public static void alert(double value) {
System.out.println("double: " + value);
}
public static void alert(String value) {
System.out.println("String: " + value);
}
}