正则表达式获得字符串中的第一个数字:100 2011-10-20 14:28:55

rat*_*hah 15 java regex

我是正则表达式的新手,并且想知道我怎么才能得到字符串中的第一个数字,如100 2011-10-20 14:28:55.在这种情况下,我希望它返回100,但数字也可能更短或更长.

我在考虑像[0-9] +这样的东西,但它分别需要每一个数字(100,2001,10,......)

谢谢.

hai*_*sin 20

/^[^\d]*(\d+)/
Run Code Online (Sandbox Code Playgroud)

这将从头开始,跳过任何非数字,并匹配它找到的第一个数字序列

编辑:这个正则表达式将匹配第一组数字,但正如其他答案所指出的,如果你知道数字是在字符串的开头,parseInt是一个更好的解决方案


小智 6

只是

([0-9]+) .* 
Run Code Online (Sandbox Code Playgroud)

如果你总是在第一个数字后面有空格,这将有效


Vic*_*kin 6

试试这个来匹配字符串中的第一个数字(它可以不在字符串的开头):

    String s = "2011-10-20 525 14:28:55 10";
    Pattern p = Pattern.compile("(^|\\s)([0-9]+)($|\\s)");
    Matcher m = p.matcher(s);
    if (m.find()) {
        System.out.println(m.group(2));
    }
Run Code Online (Sandbox Code Playgroud)