Android Java正则表达式模式

时间:2015-02-27 09:33:45

标签: java android regex

我ping主持人。结果是标准输出。在REGEXP下面,但它无法正常工作。我在哪里犯了错误?

String REGEXP ="time=(\\\\d+)ms";

        Pattern pattern = Pattern.compile(REGEXP);
        Matcher matcher = pattern.matcher(result);
        if (matcher.find()) {
            result = matcher.group(1);
        }

2 个答案:

答案 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+,因为

匹配器查找模式(使用它创建),然后尝试查找匹配的字符串中每个模式的出现。

  1. 如果出现多次,请使用while(matcher.group(1)
  2. 每个()代表一个被捕获的群组。