默认情况下,@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);