Regexp:匹配givin整数中数字的三元组

时间:2016-10-09 07:54:27

标签: java regex integer pattern-matching extract

所以我对Regexp相当新...现在我正在使用Regexp + loop:

boolean match = false; int number =0;

int number =0;

String Str1 = String.valueOf(451999277);

 for (int i=0;match1 == false;i++) {
        //check the pattern through loop
            match1 = Pattern.matches(".*" + i + i + i + ".*", Str1);
            number = i;// assigning the number (i) which is the triplet(occur 3 times in a row) in the givin int

    }

我的目标是找到一个在givin整数中是tripplet的数字例如:

  

我想提取:" 9"来自451999277; as" 9"来了3次,即" 999"

但我非常肯定必须有一个只使用Regexp的解决方案......如果有人帮我找到解决方案,那将会很棒......提前感谢

1 个答案:

答案 0 :(得分:2)

使用capturing group匹配数字,然后再参考:

(\d)\1\1

将匹配一个数字,将其捕获到一个组中(在这种情况下为1,因为它是正则表达式的第一组)然后立即两次匹配组1中的任何内容。

Pattern regex = Pattern.compile("(\\d)\\1\\1");
Matcher regexMatcher = regex.matcher(subject);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group();
} 

会在subject中找到第一个匹配项(如果有的话)。