yolanda trabajo servicio segun para metodo historia grupos grupo dividir dinamicas definicion contreras autores java regex http-headers

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 ...