正则表达式从Java中的字符串中找到第一个出现的前8位数字

时间:2016-10-27 00:55:47

标签: java regex

这是我的String 20161011 ,我想获得第一个String 20161011

我正在使用(^|\\s)([0-9]+)($|\\s),但是它不起作用,有人可以建议正确使用,顺便说一下我想要检索的第一个字符串是 yyyymmdd ,我不需要验证日期格式,因为它已经过验证。

3 个答案:

答案 0 :(得分:2)

这可以让你得到你想要的东西:

^([0-9]{8}).*
  • ^:匹配行的开头
  • ([0-9] {8}):匹配并捕获前8个数字
  • 。*:匹配字符串的其余部分,但不捕获它。 (您 可能会离开这部分)

答案 1 :(得分:1)

正则表达式$(\d{8})\.适用于您的示例。但是,您可能希望按照this answer中的描述拆分字符串。这样您就可以访问每个号码,而不仅仅是第一个号码。它也可能更快一点。

答案 2 :(得分:1)

以下是如何实现这一目标的,

    Pattern r = Pattern.compile("\\d{8}+");
    Matcher m = r.matcher("12345678.231610.01234567");
    String str = "";
    if (m.find()) {
        // Only stores first occurence, occuring at any index of string.
        str = m.group();
    }