本帖最后由 java2000_net 于 2008-08-05 11:07:16 编辑

解决方案 »

  1.   

    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());
    }
    }
    }
      

  2.   

    1.的需求不太明确1.REG-BS-PASS-2008-014 
    REG,BS,PASS可以为任意字符,当中用-连起来,2008位任意年份,014为从001到999的任意数这里的任意是指什么?
     
      

  3.   

    1
    .{3}-.{2}-.{4}-\\d{4}-\\d{3}
    2
    CTP-DRAFT-\\d{4}-\\d{3}
      

  4.   

    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());
            }
    }
    }
      

  5.   

    需求确实有些模糊啊条件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));
      

  6.   

    还有一个,上面是第一个的,第二个可以这样
    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());
            }
    }
    }
      

  7.   


    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));
    }
    }
      

  8.   

    如果要分开用的话:([^\\s-]+-[^-]+-[^-]+-\\d{4}-\\d{3})
    ([^\\s-]+-[^-]+-\\d{4}-\\d{3})
      

  9.   

    REG,BS,PASS可以为任意字符  就是 REG-BS-PASS-2008-014 前面3个用-连接的字符可以是任意长度任意字符,
    比如abcdef-abcd-das-2008-014都可以CTP-DRAFT 也可以为小写的ctp-draft, cTP-Draft类似的小写都可以