String name="sdfeie sdf 260"+'\r'+'\n'+"[ftp]";
Matcher strMa = Pattern.compile("\\[ftp\\]").matcher(name);
System.out.println(name);if(strMa.find())
{
        System.out.println(strMa.group());
}if(name.matches("\\[ftp\\]"))
{
        System.out.println(name);
}
name中的String在控制台输出为:
sdfeie sdf 260
[ftp]那我想匹配最后一行的[ftp],正则表达式写成"\[ftp\]"觉得也没啥问题,
但是奇怪的我用Sting中的matches方法却不能成功匹配name这个String,而用Pattern和Matcher这种方法就
能匹配上,所以我觉得java中Pattern和Matcher类提供的正则表达式才是规范通用的正则表达式,而java其他类
中的方法参数中可以输入正则表达式的是不是属于java自己的一套正则表达式规则?

解决方案 »

  1.   

    用pattern匹配的就如你想的那样,把匹配的字符串找出来。
    而String.match("")匹配的是你当前的字符串是不是跟要匹配的字符串完全匹配,如下一段程序String name = "123123";
    System.out.println(name.matches("\\d"));  //输出false
    System.out.println(name.matches("\\d*")); //输出true
    name = "12a";
    System.out.println(name.matches("\\d*")); //输出false
      

  2.   

    原来java提供的Pattern和Matcher类才是我们平时常用的正则表达式,而有些类中的matches指的是完全匹配指定的正则表达式啊,明白了。