1 回答
TA贡献1829条经验 获得超7个赞
您的正则表达式((.)+)00
匹配 1+ 次后跟00
不考虑 8 位数字的任何字符。对于第四级,您需要不以00
.结尾的匹配项。
如果您不能有 4 对 2 次零,并且在 2 次零之前不能出现 2 次零,您可以使用捕获组的交替。然后在匹配器中检查是否存在第 1、2 或 3 组以获得级别 1、2 或 3。如果有匹配但没有组,则您将获得级别 4。
^(?:(0[1-9]|[1-9][0-9])0{6}|(0[1-9]|[1-9][0-9]){2}0{4}|((?:0[1-9]|[1-9][0-9])){3}00|(?:0[1-9]|[1-9][0-9]){4})$
解释
^
字符串的开头(?:
非捕获组(0[1-9]|[1-9][0-9])0{6}
匹配 01-99 然后是 6 次 0|
或者(0[1-9]|[1-9][0-9]){2}0{4}
匹配 2 次 01-99,然后匹配 4 次零|
或者(?:(?:0[1-9]|[1-9][0-9])){3}00
匹配 3 次 01-99,然后匹配 2 次零|
或者(0[1-9]|[1-9][0-9]){4})
比赛4次01-99)
关闭非捕获组$
字符串的结尾
例如:
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
if (null != matcher.group(1)) {
System.out.println("Level 1");
} else if (null != matcher.group(2)) {
System.out.println("Level 2");
} else if (null != matcher.group(3)) {
System.out.println("Level 3");
} else {
System.out.println("Level 4");
}
}
输出:
Full match: 01000000
Level 1
Full match: 10000000
Level 1
Full match: 99990000
Level 2
Full match: 99999900
Level 3
Full match: 55555555
Level 4
添加回答
举报