在JAVA中,用正则表达式 匹配指定数字次数的代码怎么写呢,求助!求助
答案:1 悬赏:30 手机版
解决时间 2021-11-13 10:43
- 提问者网友:人生佛魔见
- 2021-11-12 21:13
在JAVA中,用正则表达式 匹配指定数字次数的代码怎么写呢,求助!求助
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-11-12 21:34
涉及(统计数量)这类有语义的就不该用正则了。
直接逐个字符过滤反而更快。
按规则:
1、2、4各最多出现1次或不出现;
3最多出现2次以下或不出现;
其他符号非法;
设c计数
public class Test {
static public boolean validate(String t){
int c[]=new int[4];
for(char ch:t.toCharArray()){
switch(ch){
case '1':case '2':case '3':case '4':
c[ch-'1']++;
if(c[0]>1 || c[1]>1 || c[3]>1 || c[2]>2 ) return false;
break;
default:
return false;
}
}
return c[0]<=1 && c[1]<=1 && c[2]<=2 && c[3]<=1;
}
static public void main(String argv[]){
String a[]={ "12112","1211","142","1411","133","1321",
"133","1312", "13312", "1362", "1332" };
for(String t:a)
if(validate(t)) System.out.println(t);
}
}
========
142
133
133
1332
========
另你例中有1211,出现有3个1所以不合法。
直接逐个字符过滤反而更快。
按规则:
1、2、4各最多出现1次或不出现;
3最多出现2次以下或不出现;
其他符号非法;
设c计数
public class Test {
static public boolean validate(String t){
int c[]=new int[4];
for(char ch:t.toCharArray()){
switch(ch){
case '1':case '2':case '3':case '4':
c[ch-'1']++;
if(c[0]>1 || c[1]>1 || c[3]>1 || c[2]>2 ) return false;
break;
default:
return false;
}
}
return c[0]<=1 && c[1]<=1 && c[2]<=2 && c[3]<=1;
}
static public void main(String argv[]){
String a[]={ "12112","1211","142","1411","133","1321",
"133","1312", "13312", "1362", "1332" };
for(String t:a)
if(validate(t)) System.out.println(t);
}
}
========
142
133
133
1332
========
另你例中有1211,出现有3个1所以不合法。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯