System.out.print elimina la excepción de clase Matcher

Así que estaba usando Jsoup para rastrear algunas páginas web y ocurre este problema por cable.

Con la expresión regex de

// Sets the prefix for all pages to prevent navigate to unwanted pages.
String prefix = "https://handbook.unimelb.edu.au/%d/subjects";
// Postfix for search page
String searchPostfix = "(\\?page=\\d+)?$";
// Postfix for subject page
String subjectPostfix = "\\/(\\w+)(\\/.+)?$";

String root = String.format(prefix, "2019");
String pattern = root.replace("/", "\\/").replace(".", "\\.");
Pattern reg1 = Pattern.compile("^" + pattern + searchPostfix);
Pattern reg2 = Pattern.compile("^" + pattern + subjectPostfix);

Con estos patrones regex. Lo corrí con una cuerda

String s1 = "https://handbook.unimelb.edu.au/2019/subjects/undergraduate";

Y con un método:

private String getSubjectCode(String link) {
    System.out.println(link);
    if (isSubjectPage(link)) {
        Matcher subjectMatcher = subjectPattern.matcher(link);
        System.out.println(link);
        // System.out.println(subjectMatcher.matches());   ## Exception if commented
        System.out.println(subjectMatcher.group(0));
        System.out.println(subjectMatcher.group(1));


        return subjectMatcher.group(1);
    }
    return null;
}

Lo que sucederá es que si dejo esa línea comentada sin comentar, el programa funcionó bien.

Sin embargo, si comento esa línea

Exception in thread "main" java.lang.IllegalStateException: No match found
    at java.base/java.util.regex.Matcher.group(Matcher.java:645)
    at Page.Pages.getSubjectCode(Pages.java:54)
    at Page.Pages.enqueue(Pages.java:85)
    at Crawler.Crawler.parsePage(Crawler.java:41)
    at Crawler.Crawler.crawl(Crawler.java:51)
    at Main.main(Main.java:9)

Se generará la excepción anterior, ¿por qué una línea de impresión afectará la forma en que se ejecuta el programa?

Además, sin comentarios.

System.out.println(subjectMatcher.matches());   // Exception if commented
// out -> true
Respuesta 1

Necesito escribir una aplicación, que usará una biblioteca compartida. Necesito que esa aplicación se instale en dispositivos con Android 1.6 y superior. He agregado la información de la biblioteca compartida en el ...

Estoy tratando de extraer las entradas de columnas INCLUSO de la matriz 2D dada. El código que he escrito es: public static void main (String [] args) {int [] [] rearra = new int [5] [3]; En t[]...

He encontrado que la medida de similitud de Okapi se puede utilizar para calcular la similitud de documentos desde aquí http://www2002.org/CDROM/refereed/643/node6.html y desde este documento http://singhal.info/ieee2001.pdf I .. .

En mi aplicación, estoy generando grandes archivos pdf / csv. Me pregunto ¿Hay alguna forma de transmitir archivos grandes en Micronaut sin guardarlo completamente en la memoria antes de enviarlo a un cliente?