我写个正则 匹配 C301121212,就是C开头后面跟数字的
    /**
     * 返回是否以C开头,后面跟数字
     * @param str
     * @return
     */
    public static boolean isStartWithC(String str)
    {        //匹配以C开头的
        Pattern p = Pattern.compile("[C][0-9]+");
        Matcher m = p.matcher(str);
        if (m.find())
        {
            return true;        }
        return false;    }但是 像这种 30121.C301121212 怎么 也匹配上了,我想只匹配C开头后面跟数字的

解决方案 »

  1.   

     Pattern p = Pattern.compile("^[C][0-9]+$");^开始
    $结束
      

  2.   

    import java.util.regex.*;public class PatternTest {

    public static void main(String args[]){
    String str = "30121.C301121212";

    Pattern p = Pattern.compile("C\\d+");
            Matcher m = p.matcher(str);
            
            while (m.find())
                System.out.println(m.group());
    }
    }
      

  3.   

    Pattern p = Pattern.compile("^[C][0-9]+$");
      

  4.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Test{
    public static void main (String[] args)
        {
            String str="C301121212";
            Pattern p = Pattern.compile("c([0-9]+)",Pattern.CASE_INSENSITIVE);
            Matcher m = p.matcher(str);
            if (m.find())
            {
                System.out.print(m.group());
            }
        }
    }
      

  5.   


    这种跟
    Pattern p = Pattern.compile("^[C][0-9]+$"); ^开始 
    $结束 
    没什么区别吧
      

  6.   

    楼主再看看API,多试下就能看出区别来了。别人也指出来了啊!
      

  7.   

    如果要匹配整个字符串,用"30121.C301121212".matches("[C][0-9]+");
      

  8.   

    你不是要匹配30121.C301121212 中的“C301121212”吗?你用("^[C][0-9]+$")能匹配出来吗?这个正则的意思是以C开头,数字结尾的 你试一试再说
      

  9.   

    再补充一句,你要去匹配形如"C12343221"这样的字符串,用"^[C][\\d]+"是没有问题的,看代码:public class PatternTest {

    public static void main(String args[]){
    String str = "30121.C301121212";
    String str1 = "C12343221";

    String pattern = "C\\d+";
    String pattern1 = "^[C][\\d]+";

    System.out.println(str.matches(pattern));
    System.out.println(str1.matches(pattern1));
    System.out.println(str.matches(pattern1));
    System.out.println(str1.matches(pattern));
    }
    }