正则表达式获取字符串中的第一个数字和其他字符

新手上路,请多包涵

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

我在想类似 [0-9]+ 的东西,但它需要单独的每个数字 (100,2001,10,…)

谢谢你。

原文由 ratsimihah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

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

     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));
    }

原文由 Victor Sorokin 发布,翻译遵循 CC BY-SA 3.0 许可协议

/^[^\d]*(\d+)/

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

编辑:此正则表达式将匹配第一组数字,但是,正如其他答案中指出的那样,如果您知道数字位于字符串的开头,parseInt 是更好的解决方案

原文由 hair raisin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题