簡體   English   中英

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

[英]string.matches(“.*”) returns false

在我的程序中,我有一個字符串(從外部庫中獲取),它與任何正則表達式都不匹配。

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打印到stdout時,它看起來沒問題。

以下是從PDF中提取文本的代碼(我使用的是iText 5.0.1):

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

默認情況下. 與換行符不匹配。 所以我的猜測是你的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).*將匹配任何字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM