将类似于
<img alt="" hspace=0 src="c:\documents and settings\zhangjian\桌面\1189_288944.jpg" align=baseline border=0>的字符串中的alt和src标记保留下来,其中alt标记不是必有,而且就是有,和src的位置也没有固定的顺序。
替换后的结果为
<img alt="" src="c:\documents and settings\zhangjian\桌面\1189_288944.jpg" />
最后以闭合方式结束,/>

解决方案 »

  1.   

    表达式:
    <img(?:(?:(?!alt|src)(?:"[^"]*"|'[^']*'|[^"'>]))*(?:(alt="[^"]*")|(src="[^"]*"))?)*>替换为:
    <img $1 $2 />测试工具:
    http://www.regexlab.com/zh/replshop.asp?pat=%3Cimg%28%3F%3A%28%3F%3A%28%3F%21alt%7Csrc%29%28%3F%3A%22%5B%5E%22%5D*%22%7C%27%5B%5E%27%5D*%27%7C%5B%5E%22%27%3E%5D%29%29*%28%3F%3A%28alt%3D%22%5B%5E%22%5D*%22%29%7C%28src%3D%22%5B%5E%22%5D*%22%29%29%3F%29*%3E&rto=%3Cimg%20%241%20%242%20/%3E&txt=%3Cimg%20alt%3D%22%22%20hspace%3D0%20src%3D%221189_288944.jpg%22%20border%3D0%3E%0D%0A%3Cimg%20hspace%3D0%20src%3D%221189_288944.jpg%22%3E%0D%0A%3Cimg%20hspace%3D0%20src%3D%221189_288944.jpg%22%20alt%3D%22okokok%22%3E
    这个表达式要求 alt 和 src 的内容用 双引号 包含,如果搂主想要能够自动适应单双引号的,搂住可自己改写。参考文章:
    http://www.regexlab.com/zh/regref.htm
      

  2.   

    String s="<img alt=\"\" hspace=0 src=\"c:\\documents and settings\\zhangjian\\桌面\\1189_288944.jpg\" align=baseline border=0>";
            String reg="(<img)\\s+(alt=\"[^\"]*\")?.+?(src=\"[^\"]+\").+?(>)";
            System.out.println(s.replaceAll(reg,"$1 $2 $3 /$4"));
      

  3.   

    如果搂主要求alt和src的位置也没有固定的顺序的话