如何为aabbb和aaabbcc等数字模式创建regex模式

hgtggwj0  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(402)

如何为aabbb和aaabbcc等数字模式创建regex模式。第一组中匹配的数字不应在第二组和以后的组中考虑。

Here:
A = [0-9] Any number between 0 to 9
B = [0-9] Any number between 0 to 9 excluding A
C = [0-9] Any number between 0 to 9 excluding A and B

例如: 5555333 , 7777999 , 2225588 , 1113377 我想用java正则表达式从更大的数字范围中找到这样的数字。

ujv3wf0j

ujv3wf0j1#

我相信这正是你想要的。它捕获所需的数字,后跟0或多个相同的数字,而不是在否定前瞻Assert中使用反向引用后跟任何前一个数字。

String pat = "(\\d)\\1*(?:(\\d)\\2*(?!\\1)){1,2}";
long[] data = {112233, 123333, 888777555, 999666, 222111222,222222, 111122221, 11223344,44442222,444455522, 522212121};
for (long i : data) {
    String s = Long.toString(i);
    System.out.printf("%12s - %s%n", s, s.matches(pat) ? "Valid" : "Invalid");
}

印刷品

112233 - Valid
      123333 - Valid
   888777555 - Valid
      999666 - Valid
   222111222 - Invalid
      222222 - Valid
   111122221 - Invalid
    11223344 - Invalid
    44442222 - Valid
   444455522 - Valid
   522212121 - Invalid

相关问题