regex—在java中使用正则表达式解析文本中的数字

eh57zj3b  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(208)

这个问题在这里已经有答案了

java正则表达式中matches()和find()之间的差异(5个答案)
18天前关门了。
我有以下代码,需要从文本中解析进程id:

@Test
public void testParseProcessId() {
    String text = "Private property of Exodus: 1016@localhost";
    Pattern pattern = Pattern.compile("^Private property of Exodus:\\s(\\d+)");
    String matched = null;
    Matcher matcher = pattern.matcher(text);
    if (matcher.matches()) {
        matched = matcher.group(1);
    }
    assertEquals("1016", matched);
}

测试失败了,但是我已经检查了正则表达式应该是正确的,我遗漏了什么?

xa9qqrwz

xa9qqrwz1#

方法 matches() 如果可以匹配整个字符串,则仅返回true。
您应该更改正则表达式: ^Private property of Exodus:\\s(\\d+).*$ 得到一个完整的匹配。这种方式 matcher.matches() 结果 true

相关问题