//匹配以.C开头的
Pattern p = Pattern.compile("[.C][0-9]+");//是true?
//"[\\.C][0-9]+" 还是true;// "\\.C[0-9]+" 终于false问?为什么第2个正则 不行呢? /**
* @param args
*/
public static void main(String[] args)
{ System.out.println(isMiddleStartWithDotC("C1000")); }
/**
* 返回中间是否有.C的计数器
* @param s
* @return
*/
public static boolean isMiddleStartWithDotC(String s)
{ //匹配以.C开头的
Pattern p = Pattern.compile("[.C][0-9]+");//是true?
//"[\\.C][0-9]+" 还是true;// "\\.C[0-9]+" 终于false
Matcher m = p.matcher(s);
if (m.find())
{
return true; }
return false;
}
Pattern p = Pattern.compile("[.C][0-9]+");//是true?
//"[\\.C][0-9]+" 还是true;// "\\.C[0-9]+" 终于false问?为什么第2个正则 不行呢? /**
* @param args
*/
public static void main(String[] args)
{ System.out.println(isMiddleStartWithDotC("C1000")); }
/**
* 返回中间是否有.C的计数器
* @param s
* @return
*/
public static boolean isMiddleStartWithDotC(String s)
{ //匹配以.C开头的
Pattern p = Pattern.compile("[.C][0-9]+");//是true?
//"[\\.C][0-9]+" 还是true;// "\\.C[0-9]+" 终于false
Matcher m = p.matcher(s);
if (m.find())
{
return true; }
return false;
}
.指代任意字符,[.C]就是任意字符或者C,也就还是任意字符………………
就是说任意字符开始
[\\.C] 还是true; 匹配有.或C
\\.C 终于false 匹配.C//返回中间是否有.C的计数器
//匹配以.C开头的
你要匹配中间有.C的还是以.C开头的啊?匹配.C开头 ^\\.C
最正确的应该是6楼说的^\\.C
System.out.println(".C123".matches("^\\.C[0-9]+"));
System.out.println("0.C123".matches("^\\.C[0-9]+"));
System.out.println(".C124443".matches("^\\.C[0-9]+"));结果:
false
true
false
true
[\\.C][0-9]+这里转义符写和不写一样,意思和上面那个相同
\\.C[0-9]+这个不用说了
如果匹配.C要用[]的话可以这个
1:[.C]{2}[0-9]+
2:[.]C[0-9]+
3:正常写法:^\\.C\\d+$
这种匹配不对 dddd..CC1000 会匹配CC1000PS:public static boolean isMiddleStartWithDotC(String s)
直接返回
return m.find();
正则中:
.是任意字符,
\.是转义的点号
java参数中又进行了转义,所以两个反斜杠了