String line = "widtha";
String regex = "width";//这样是正确的
//String regex = "^width$";//这样就不对吗  。
System.out.println(line.replaceAll(regex, "alt=inline"));
System.out.println(line);

解决方案 »

  1.   


    String line = "width";
    //String regex = "width";//这样是正确的
    String regex = "^width$";//这样就不对吗 。
    //这样匹配的是以w开关,以h结尾的内容为width的字符串。把line改为上面的就可以匹配。^和$有特殊含义:
    //^ 行的开头 
    //$ 行的结尾 
    System.out.println(line.replaceAll(regex, "alt=inline"));
    System.out.println(line);
      

  2.   

    上面注释处少了两个字:
    //这样匹配的是以w开关,以h结尾的内容为width的一行字符串。把line改为上面的就可以匹配。^和$有特殊含义:
      

  3.   

    这是正则表达式的基本规则 ^匹配内容的开始 $匹配内容的结束。加上这两个家伙,相当于被replace的String的整个String内容必须与^和$之间的内容完全相同才会匹配,并且replace只会发生一次
      

  4.   

    原因就出在你的regex = "^width$"  楼主既然写了^那么所有以w开头的字符串都可以匹配,那么你的String line = "widtha";就是以w开始的,但是问题出在你的$上,以h结尾,可是正则表达式不会自己拆分widtha这个字符串,它发现你要替换的字符串以a结尾,所以根本不会发生替换,输出的结果还是原先的widtha
      

  5.   

    反之,楼主用String regex = "width";没有用正则表达式里的特殊字符,而是用实实在在的字符串去匹配字符串,那么正则表达式就会将widtha这个字符串里面找到width这个字符串进行替换。