返回字符串中第一个数字的值

时间:2015-08-20 08:25:50

标签: java regex string

您好我使用通用表达式获取字符串中的第一个数字:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HelloWorld{

     public static void main(String []args){
        String string = "hellow this is \"width: 32%\" and i know";

        Pattern pattern =  Pattern.compile("width: (\\d+?)");
        Matcher matcher = pattern.matcher(string);

        matcher.find();
        System.out.println(Integer.parseInt(matcher.group(1)));
     }
}

这是一个简化版本。这打印出数字3,但我想打印出32,我做错了什么?有人能指出我正确的方向, 感谢。

3 个答案:

答案 0 :(得分:3)

删除?,因为?之后的+*会进行非贪婪的匹配。所以一旦找到一个匹配就停止匹配。 \\d+?匹配第一个数字并停止匹配下一个数字,因为它已找到匹配项。

Pattern pattern =  Pattern.compile("width: (\\d+)");

答案 1 :(得分:2)

(\\ d +?)你懒散的想要数字,所以它会花费更少的数字。

您可以使用(\\ d +)使其变得贪婪。

答案 2 :(得分:-2)

使用的正确模式是(查找第一个数字百分比)

<script></script>

这完全可以获得%之前的数字,希望这对其他人也有帮助。