有一类似这样的0,1,2组成的字符串 s = "0001200011002010",我想匹配出其中是否含有长度为6的含有4个0,2个1的字符串,正则表达式该怎么写,急求答案,谢谢
------解决方案--------------------
个人觉得貌似不能直接用正则,暂时能想到的方法是一步一步判断:
1.得到字符串S后,以“2”进行分段(包含2的肯定是不符合),假设分了n个段
2.对每一段的长度进行判断,找到所有符合长度大于等于6的
3.对每一个长度符合的字符串从第一位开始一次进行6位长度的截取字符串进行判断:(假如这个字段有8位,那应该有1-6、2-7、3-8三个截取字符串)
a.是否这个6位的字符串仅包含数字1和0(如果你能确定一定是这样的,那当然就不用判断了)
b.数字1的数量是否为2
a、b均符合的就可判断为符合条件的
=。= 想不到直接能判断的正则~~就笨办法来了
------解决方案--------------------
配合正则式,有点逻辑判断:
// 目标串,稍微扩展了下
String s = "00012000110020100000";
// 只包含0、1的匹配
Pattern p01 = Pattern.compile("[01]{6}");
Matcher m = p01.matcher(s);
// 先找到长度为6的0、1串
while (m.find()) {
String strTmp = m.group();
// 按位拆分,将6位数相加,和为2,则表示有4个0,2个1
int sum = 0;
for (int i = 0; i < strTmp.length(); i++) {
sum += Integer.valueOf(strTmp.substring(i, i + 1));
}
if (sum == 2) {
System.out.println(s + "字符串中,由4个0,2个1组成的字串为:" + strTmp);
} else {
System.out.println("字符串" + strTmp + "中,0与1的个数不符合要求");
}
}
------解决方案--------------------
像楼上一样把。。