在Java中使用正则表达式从文本中解析数字



我有这样的代码,我需要从文本中解析进程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);
}

测试失败了,但我已经检查了正则表达式是否正确,这里缺少什么?

只有当整个字符串都可以匹配时,方法matches()才会返回true。

您应该更改正则表达式:^Private property of Exodus:\s(\d+).*$以获得完全匹配。通过这种方式matcher.matches()导致true

最新更新