java - 正则表达式匹配中的意外结果

标签 java regex

我试图检查每一行是否等于“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/

相关文章:

java - 如何在spring boot中启用浏览器缓存

python - 使用 .astype(str) 将包含地址和坐标的列转换为字符串会删除坐标

Java Regex 捕获多个匹配项

java - 将字符串从 UTF-8 转换为 ANSI 并将其显示为 UTF-8

java - 复选框和共享首选项

java - MapReduce 作业在 map 部分后显示错误

c# - 用于更改 html <br> 标记的不区分大小写的正则表达式

java - 将 SQL 查询文本中的参数替换为 XXXXX

ruby - 正则表达式匹配文件中的空行和注释

java - 如何在android中禁用按键声音?