我ping主持人。结果是标准输出。在REGEXP下面,但它无法正常工作。我在哪里犯了错误?
String REGEXP ="time=(\\\\d+)ms";
Pattern pattern = Pattern.compile(REGEXP);
Matcher matcher = pattern.matcher(result);
if (matcher.find()) {
result = matcher.group(1);
}
答案 0 :(得分:1)
你有太多的反斜杠。假设您想从“time = 32ms”这样的字符串中获取数字,那么您需要:
String REGEXP ="time=(\\d+)ms";
Pattern pattern = Pattern.compile(REGEXP);
Matcher matcher = pattern.matcher(result);
if (matcher.find()) {
result = matcher.group(1);
}
说明:您要查找的搜索模式为“\ d”,表示十进制数,“+”表示一次或多次出现。
要获得匹配器的“\”,需要对其进行转义,并且转义字符也是“\”。
括号定义您要挑选的匹配组。
使用“\\\\ d +”,匹配器将其视为“\\ d +”,它将匹配反斜杠后跟一个或多个“d”。第一个反斜杠保护第二个反斜杠,第三个反斜杠保护第四个反斜杠。
答案 1 :(得分:1)
您的正则表达式中只需要\\d+
,因为
匹配器查找模式(使用它创建),然后尝试查找匹配的字符串中每个模式的出现。
while(matcher.group(1)
。()
代表一个被捕获的群组。