我试图从输入字符串中仅获取clientiddstid。这是我尝试的代码:

String input = "User clientId=287372.Dstid=129 Some more text clientId=336263. Dstid=2451. This clientNum=120";

Pattern p = Pattern.compile("(clientId=)(\\d+)(Dstid=)(\\d+)");
Matcher m = p.matcher(input);

StringBuffer result = new StringBuffer();

while (m.find()) {
  System.out.print("clint id : " + m.group(1));
  System.out.println("Dst id : " + m.group(2));
}

m.appendTail(result);
System.out.println(result);


但是我得到的输出是:


用户clientId = 287372.Dstid = 129,此处为一些文本clientId = 336263。 Dstid = 2451。该客户数量= 120


有什么建议如何解决吗?

最佳答案

请尝试以下正则表达式

(clientId=[0-9]+)[.\s]*(Dstid=[0-9]+)


使用时请确保转义\

Pattern p = Pattern.compile("(clientId=[0-9]+)[.\\s]*(Dstid=[0-9]+)");

10-04 15:13