急满分求一正则表达式 本帖最后由 java2000_net 于 2008-08-05 11:07:16 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2.import java.util.regex.*;class Regular{ public static void main(String[] args) { String regex = "CTP-DRAFT\\-\\d{4}\\-\\d{3}"; String str = "CTP-DRAFT-2008-055 "; Pattern p=Pattern.compile(regex); Matcher m=p.matcher(str); while(m.find()) { System.out.println(m.group()); } }} 1.的需求不太明确1.REG-BS-PASS-2008-014 REG,BS,PASS可以为任意字符,当中用-连起来,2008位任意年份,014为从001到999的任意数这里的任意是指什么? 1.{3}-.{2}-.{4}-\\d{4}-\\d{3}2CTP-DRAFT-\\d{4}-\\d{3} package test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String[] args) { String regex = "^[a-zA-Z]+-[a-zA-Z]+-\\d{4}\\-\\d{3}$"; String str = "CTP-DRAFT-2008-055 "; Pattern p=Pattern.compile(regex); Matcher m=p.matcher(str); while(m.find()){ System.out.println(m.group()); } }} 需求确实有些模糊啊条件1中的字符数我写成固定的了,要不固定的话请自行修改。 String source1 = "REG-BS-PASS-2008-014"; String source2 = "CTP-DRAFT-2008-001".toUpperCase(); String pattern = "([a-zA-Z]{3}-[a-zA-Z]{2}-[a-zA-Z]{4}-\\d{4}-[0-9]{2}[1-9])|(CTP-DRAFT-\\d{4}-[0-9]{2}[1-9])"; System.out.println(Pattern.matches(pattern, source1)); System.out.println(Pattern.matches(pattern, source2)); 还有一个,上面是第一个的,第二个可以这样package test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String[] args) { String regex = "^CTP-DRAFT-\\d{4}-\\d{3}$"; String str = "cTP-DRAfT-2008-055"; Pattern p=Pattern.compile(regex,2); Matcher m=p.matcher(str); while(m.find()){ System.out.println(m.group()); } }} public static void do10() { String str = "JJJFD JDFKF DKF D REG-BS-PASS-2008-014 DFDF DFD FF SDSF CTP-DRAFT-2008-055"; Pattern pattern = Pattern.compile("([^\\s-]+-[^-]+-([^-]+-)?\\d{4}-\\d{3})",Pattern.CASE_INSENSITIVE | Pattern.DOTALL); Matcher m = pattern.matcher(str); while (m.find()) { System.out.println(m.group(1)); } } 如果要分开用的话:([^\\s-]+-[^-]+-[^-]+-\\d{4}-\\d{3})([^\\s-]+-[^-]+-\\d{4}-\\d{3}) REG,BS,PASS可以为任意字符 就是 REG-BS-PASS-2008-014 前面3个用-连接的字符可以是任意长度任意字符,比如abcdef-abcd-das-2008-014都可以CTP-DRAFT 也可以为小写的ctp-draft, cTP-Draft类似的小写都可以 一个奇怪的文件上传问题! 帮忙看一个小程序 急求SQL语句动态赋值问题,,救命啊,,谢谢了 先 ajax返回值 用eclipse+javaBean+mysql正在做一个项目,现在我的登陆窗口不能跳转,请各位高手帮我看下 jboss怎样关闭集群功能? 请问用JAVA解析XML字符串 为什么在JB2006里面不能跳转页面 jbuilder7开发webservices的环境 jtable单元格嵌套jtable httpunit的js问题 如何判断系统故障来源?急~~
public static void main(String[] args) {
String regex = "CTP-DRAFT\\-\\d{4}\\-\\d{3}";
String str = "CTP-DRAFT-2008-055 ";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(str);
while(m.find())
{
System.out.println(m.group());
}
}
}
REG,BS,PASS可以为任意字符,当中用-连起来,2008位任意年份,014为从001到999的任意数这里的任意是指什么?
.{3}-.{2}-.{4}-\\d{4}-\\d{3}
2
CTP-DRAFT-\\d{4}-\\d{3}
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String regex = "^[a-zA-Z]+-[a-zA-Z]+-\\d{4}\\-\\d{3}$";
String str = "CTP-DRAFT-2008-055 ";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group());
}
}
}
String source2 = "CTP-DRAFT-2008-001".toUpperCase();
String pattern = "([a-zA-Z]{3}-[a-zA-Z]{2}-[a-zA-Z]{4}-\\d{4}-[0-9]{2}[1-9])|(CTP-DRAFT-\\d{4}-[0-9]{2}[1-9])";
System.out.println(Pattern.matches(pattern, source1));
System.out.println(Pattern.matches(pattern, source2));
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String regex = "^CTP-DRAFT-\\d{4}-\\d{3}$";
String str = "cTP-DRAfT-2008-055";
Pattern p=Pattern.compile(regex,2);
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group());
}
}
}
public static void do10() {
String str = "JJJFD JDFKF DKF D REG-BS-PASS-2008-014 DFDF DFD FF SDSF CTP-DRAFT-2008-055";
Pattern pattern = Pattern.compile("([^\\s-]+-[^-]+-([^-]+-)?\\d{4}-\\d{3})",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = pattern.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
}
([^\\s-]+-[^-]+-\\d{4}-\\d{3})
比如abcdef-abcd-das-2008-014都可以CTP-DRAFT 也可以为小写的ctp-draft, cTP-Draft类似的小写都可以