vogella regular number matches java regex

java - regular - s+/



string.matches(".*") devuelve falso (1)

En mi programa, tengo una cadena (obtenida de una biblioteca externa) que no coincide con ninguna expresión regular.

String content = // extract text from PDF assertTrue(content.matches(".*")); // fails assertTrue(content.contains("S P E C I A L")); // passes assertTrue(content.matches("S P E C I A L")); // fails

¿Alguna idea de lo que podría estar mal? Cuando imprimo content a la salida estándar, se ve bien.

Aquí está el código para extraer texto del PDF (estoy usando iText 5.0.1):

PdfReader reader = new PdfReader(source); PdfTextExtractor extractor = new PdfTextExtractor(reader, new SimpleTextExtractingPdfContentRenderListener()); return extractor.getTextFromPage(1);


Por defecto, el . no coincide con los saltos de línea. Así que mi conjetura es que su content contiene un salto de línea.

También tenga en cuenta que las matches coincidirán con toda la cadena, no solo una parte de la misma: ¡no hace lo que contains !

Algunos ejemplos:

String s = "foo/nbar"; System.out.println(s.matches(".*")); // false System.out.println(s.matches("foo")); // false System.out.println(s.matches("foo/nbar")); // true System.out.println(s.matches("(?s).*")); // true

Los (?s) en el último ejemplo causarán el . para que coincida con los saltos de línea también. Entonces (?s).* Coincidirá con cualquier cadena.