string.matches(“。*”)返回false

【字号: 日期:2024-02-25浏览:31作者:雯心
如何解决string.matches(“。*”)返回false?

默认情况下,@H_404_1@.不匹配的换行符。所以我的猜测是您@H_404_1@content包含换行符。

还要注意,@H_404_1@matches它将匹配整个字符串,而不仅仅是字符串的一部分:它不会做什么@H_404_1@contains!

一些例子:

@H_404_1@String s = 'foonbar';System.out.println(s.matches('.*')); // falseSystem.out.println(s.matches('foo')); // falseSystem.out.println(s.matches('foonbar')); // trueSystem.out.println(s.matches('(?s).*')); // true

在@H_404_1@(?s)最后一个例子将导致@H_404_1@.匹配换行符也是如此。因此@H_404_1@(?s).*将匹配任何字符串。

解决方法

在我的程序中,我有一个字符串(从外部库获取),该字符串与任何正则表达式都不匹配。

String content = // extract text from PDFassertTrue(content.matches('.*')); // failsassertTrue(content.contains('S P E C I A L')); // passesassertTrue(content.matches('S P E C I A L')); // fails

知道有什么问题吗?当我打印content到标准输出时,看起来还可以。

这是从PDF提取文本的代码(我正在使用iText 5.0.1):

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

相关文章: