String content = "<image src='a.jpg' alt=\"测试\">测试</image>测试用例";如果要用就content.replaceAll来替换,成"<image src='a.jpg' alt=\"#\">#</image>测试用例";正则该怎么写啊,我是要把image标签内所有关键字“测试”都替换成# 。不在image标签内的“测试”不替换。

解决方案 »

  1.   


    public class Test60021{
      public static void main(String []args){
      String content = "<image src='a.jpg' alt=\"测试\">测试</image>测试用例";
      String res=content.replaceAll(">测试<", ">#<");
      System.out.println(res);
      }
    }
      

  2.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {    public static void main(String[] args) {
            String content = "测试<a href=\"test\">测试</a>测试<image src='a.jpg' alt=\"测试\">测试</image>测试用例";
            String regex = "<(?i:image).*?</(?i:image)>";
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(content);
            StringBuffer sb = new StringBuffer();
            while(m.find()) {
                m.appendReplacement(sb, m.group().replace("测试", "#"));
            }
            m.appendTail(sb);
            System.out.println(sb.toString());
        }
    }
      

  3.   

    一次性不太好弄.!
    提供你一种解决方案
    String content = "<image src='a.jpg' alt=\"测试\">测试</image>测试用例";
    String regex = "</image>";
    String[] arr = content.split(regex);
    String res = arr[0].replaceAll("测试", "#") + regex + arr[1];
    可以得到你想要的.!因为考虑到你img标签后面不知道有多少个测试用例,所以一时间只想出了这个解决方案.!
      

  4.   

    呵呵,再来一个public class Test {    public static void main(String[] args) {
            String content = "测试<a href=\"test\">测试</a>测试" +
                "<image src='a.jpg' alt=\"aa测试aa测试bb测试\">测试aa测试bb测试</image>" +
                "测试用例\n" +
                "测试<a href=\"test\">测试</a>测试" +
                "<image src='a.jpg' alt=\"aa测试aa测试bb测试\">测试aa测试bb测试</image>测试\n" +
                "abc测试<image src='测试.jpg' alt=\"aa测试aa测试bb测试\">测试aa测试bb测试</image>用例";
            String regex = "(?:(?<=<(?i:image))|(?<!\\A)\\G)(.*?)测试(?=.*?</(?i:image)>)";
            System.out.println(content.replaceAll(regex, "$1#"));
        }
    }
      

  5.   

    火龙果,大哥最好能给我解释一下String regex = "<(?i:image).*?</(?i:image)>"; 这个正则含义哈,我看着不太懂
      

  6.   

    (?i:image) 表示不区分大小写匹配 image,如果你能保证全部是小写的话,可以把 (?i:) 去掉