请教2个正则表达式怎么写 1.形如1,1-3,* 的表达式,用逗号间隔,可以是单个数字,或用减号表示的区间,或*2.时间的表达式,如1,表示一点,也可以是1:00,也可以是01:00等等,能表达出一点的形式,折腾了半天没弄出来,求教。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个没看懂,第二个可以试试:String ss = "2:09";Pattern p = Pattern.compile("([01]?[0-9]|2[0-3])(:[0-5][0-9]|:[0-9])?");Matcher m = p.matcher(ss);if(m.find()) { System.out.println(m.group()); } 1: (\\d+-\\d+,|\\d,|\\*,)*(\\d+-\\d+|\\d|\\*)2: \\d+|\\d{1,2}:\\d{2} /*1.形如1,1-3,* 的表达式,用逗号间隔,可以是单个数字,或用减号表示的区间,或*2.时间的表达式,如1,表示一点,也可以是1:00,也可以是01:00等等,能表达出一点的形式,折腾了半天没弄出来,求教。。*/import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test{ public static void main(String[] args){ //subject1(); subject2(); } private static void subject1(){ String content = "1,1-3,*,-+41,df"; String regex = "[^,]+"; Matcher matcher = getMatcher(regex,content); while(matcher.find()){ System.out.print(matcher.group() + " "); } } private static void subject2(){ //String content String time = "一点六十分"; String regex1 = "^(0?\\d|1[0-2])$"; String regex2 = "^(0?\\d|1[0-2]):([0-5]\\d)$"; String nums = "一二三四五六七八九"; String nums1 = "一二三四五"; String regex3 = "^([零" + nums + "十]|十一|十二)点((([" + nums1 + "]十([" + nums + "])?)|零[" + nums + "])分)?$"; boolean result1 = getMatcher(regex1,time).matches(); boolean result2 = getMatcher(regex2,time).matches(); boolean result3 = getMatcher(regex3,time).matches(); if(result1 || result2 || result3){ System.out.println("correct! The time '" + time + "' is valid!"); }else{ throw new IllegalArgumentException("Illegal Argument! the time format is invalid!"); } } private static Matcher getMatcher(String regex,String content){ Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(content); return matcher; }} 正则第三应该改成String regex3 = "^([零" + nums + "十]|十一|十二)点((([" + nums1 + "]?十([" + nums + "])?)|零[" + nums + "])分)?$";因为大部分人会直接说 零点十五分 而不是 零点一十五分以上代码可以测试如下形式String time = "1"; //correctString time = "13"; //incorrectString time = "01": //correctString time = "010";//incorrectString time = "09:23";//correctString time = "一点";//correctString time = "一点五十分";//correctString time = "一点零九分";//correctString time = "一点六十分";//incorrect Object中clone()的使用问题 k=k>>1 ??? 多线程的问题 2个表要是建立主外键关系后,向主键插入值,外键是不是也同时被插入? 如何在cmd中敲命令链接数据库编译java程序 java中,为什么抽象方法不能定义成静态的? 关于查询的问题 关于JUBILDER6中JDK版本的问题 win2000 professional下如何配置weblogic6.0 PreparedStatement怎么获取sql语句 gzip解码中文乱码问题 [新手]关于开jfilechooser问题
String ss = "2:09";
Pattern p = Pattern.compile("([01]?[0-9]|2[0-3])(:[0-5][0-9]|:[0-9])?");
Matcher m = p.matcher(ss);
if(m.find()) {
System.out.println(m.group());
}
2: \\d+|\\d{1,2}:\\d{2}
/*
1.形如1,1-3,* 的表达式,用逗号间隔,可以是单个数字,或用减号表示的区间,或*
2.时间的表达式,如1,表示一点,也可以是1:00,也可以是01:00等等,能表达出一点的形式,
折腾了半天没弄出来,求教。。
*/import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test{
public static void main(String[] args){
//subject1();
subject2();
} private static void subject1(){
String content = "1,1-3,*,-+41,df";
String regex = "[^,]+";
Matcher matcher = getMatcher(regex,content); while(matcher.find()){
System.out.print(matcher.group() + " ");
}
} private static void subject2(){
//String content
String time = "一点六十分";
String regex1 = "^(0?\\d|1[0-2])$";
String regex2 = "^(0?\\d|1[0-2]):([0-5]\\d)$";
String nums = "一二三四五六七八九";
String nums1 = "一二三四五";
String regex3 = "^([零" + nums + "十]|十一|十二)点((([" + nums1 + "]十([" + nums + "])?)|零[" + nums + "])分)?$"; boolean result1 = getMatcher(regex1,time).matches();
boolean result2 = getMatcher(regex2,time).matches();
boolean result3 = getMatcher(regex3,time).matches(); if(result1 || result2 || result3){
System.out.println("correct! The time '" + time + "' is valid!");
}else{
throw new IllegalArgumentException("Illegal Argument! the time format is invalid!");
}
} private static Matcher getMatcher(String regex,String content){
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
return matcher;
}
}
因为大部分人会直接说 零点十五分 而不是 零点一十五分以上代码可以测试如下形式String time = "1"; //correct
String time = "13"; //incorrect
String time = "01": //correct
String time = "010";//incorrect
String time = "09:23";//correct
String time = "一点";//correct
String time = "一点五十分";//correct
String time = "一点零九分";//correct
String time = "一点六十分";//incorrect