我试图检查每一行是否等于“test”。当我尝试运行以下代码时,我希望结果为真,因为每一行都完全是“测试”。然而,结果是错误的。
// Expected outcome:
// "test\ntest\ntest" - should match
// "test\nfoo\ntest" - should not match
// "test\ntesttest\ntest" - should not match
Pattern pattern = Pattern.compile("^test$", Pattern.MULTILINE);
Matcher matcher = pattern.matcher("test\ntest");
System.out.println(matcher.matches()); // result is false
我在这里缺少什么?为什么结果是假的?
最佳答案
由于您使用的是 Pattern.MULTILINE
,因此它会匹配整个字符串 test\ntest
。但在您的正则表达式中,您指定字符串应仅包含 test
的单个实例,因为它被开始和结束 anchor 包围。
关于java - 正则表达式匹配中的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42487990/