我刚刚观察到了这种行为;
Pattern p1 = Pattern.compile("^$");
Matcher m1 = p1.matcher("");
System.out.println(m1.matches()); /* true */
Pattern p2 = Pattern.compile("^$", Pattern.MULTILINE);
Matcher m2 = p2.matcher("");
System.out.println(m2.matches()); /* false */
我觉得最后的陈述是不合适的。这就是文档所说的:
默认情况下,正则表达式^和$忽略行终止符,并且仅匹配整个输入序列的开头和结尾。如果激活MULTILINE模式,则^匹配输入的开头和除输入结束符外的任何行终止符之后。在MULTILINE模式下,$匹配行终止符或输入序列的结尾之前。 http://docs.oracle.com/javase/1.4.2...
从我的理解中,它应该匹配成功。接下来的内容更加混乱了;
Pattern p3 = Pattern.compile("^test$");
Matcher m3 = p3.matcher("test");
System.out.println(m3.matches()); /* true */
Pattern p4 = Pattern.compile("^test$", Pattern.MULTILINE);
Matcher m4 = p4.matcher("test");
System.out.println(m4.matches()); /* true */
那么这是什么?我如何理解这个?希望有人能够给我一些启示,真的会很感激。