java - servicio - trabajo social de grupo definicion
"No se encontraron coincidencias" cuando se usa el método de grupo del emparejador (2)
Constantemente estás sobrescribiendo las coincidencias que obtuviste usando
System.out.println(responseCodePattern.matcher(firstHeader).matches());
System.out.println(responseCodePattern.matcher(firstHeader).groupCount());
Cada línea crea un nuevo objeto Matcher.
Deberías ir
Matcher matcher = responseCodePattern.matcher(firstHeader);
System.out.println(matcher.matches());
System.out.println(matcher.groupCount());
Estoy usando Pattern
/ Matcher
para obtener el código de respuesta en una respuesta HTTP. groupCount
devuelve 1, ¡pero obtengo una excepción al intentar obtenerla! ¿Alguna idea de por qué?
Aquí está el código:
//get response code
String firstHeader = reader.readLine();
Pattern responseCodePattern = Pattern.compile("^HTTP/1//.1 (//d+) OK$");
System.out.println(firstHeader);
System.out.println(responseCodePattern.matcher(firstHeader).matches());
System.out.println(responseCodePattern.matcher(firstHeader).groupCount());
System.out.println(responseCodePattern.matcher(firstHeader).group(0));
System.out.println(responseCodePattern.matcher(firstHeader).group(1));
responseCode = Integer.parseInt(responseCodePattern.matcher(firstHeader).group(1));
Y aquí está la salida:
HTTP/1.1 200 OK
true
1
Exception in thread "Thread-0" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Unknown Source)
at cs236369.proxy.Response.<init>(Response.java:27)
at cs236369.proxy.ProxyServer.start(ProxyServer.java:71)
at tests.Hw3Tests$1.run(Hw3Tests.java:29)
at java.lang.Thread.run(Unknown Source)
pattern.matcher(input)
siempre crea un nuevo comparador, por lo que deberías llamar a matches()
nuevamente.
Tratar:
Matcher m = responseCodePattern.matcher(firstHeader);
m.matches();
m.groupCount();
m.group(0); //must call matches() first
...