微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

string.matches“*”返回false

如何解决string.matches“*”返回false

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

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

一些例子:

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

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

解决方法

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。