Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java string.matches(“*”)返回false_Java_Regex - Fatal编程技术网

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

Java string.matches(“*”)返回false,java,regex,Java,Regex,在我的程序中,我有一个字符串(从外部库获取),它与任何正则表达式都不匹配 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 你知道哪里不对吗?当我将co

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

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):


默认情况下,
与换行符不匹配。所以我猜你的
内容
包含换行符

还要注意,
匹配
将匹配整个字符串,而不仅仅是其中的一部分:它不做
包含的事情
做的事情

一些例子:

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)。*
将匹配任何字符串。

你救了我一天:)我没有意识到matches()想要匹配整个字符串。@Miroslav,是的,这个错误很容易犯,因为许多语言“查找”匹配而不是匹配整个字符串。很高兴听到你解决了!标记为最受欢迎,因为这不是我第一次被这种java炸弹击中。
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