System.out.println(s)
System.out.println("------------------------------------------")
String s1 = s.replaceAll("=([^'\">\\s]+)(\\s|>)","=\"$1\"$2")
System.out.println(s1)
//----------------------------------------
输出的结果是
<A class=test id="123" name=张三 tt=kk()>这里不替换 test=no kakaka</A><C class=sss /><B class=a id="b" name=c></B>
------------------------------------------
<A class="test" id="123" name="张三" tt="kk()">这里不替换 test="no" kakaka</A><C class="sss" /><B class="a" id="b" name="c"></B>
为了非标签内的=号,可能得使用预查找,但测试有点问题就暂时不贴上来了,如果要求不是很严格,这个是可以凑活着用的
//=====和楼主讨论中发现一个奇怪问题,就是[^'\">\\s]不能正确匹配到中文(楼主的jdk1.4就会漏掉中文)。
经过测试,在1.4以及以后的版本,下面这个是可行的
String s1 = s.replaceAll("=(?!['\"])(.*?)(\\s|>)","=\"$1\"$2")
JAVA 替换特殊字符 的 正则表达式代码如下: import java.util.regex.*
// 表达式对象
Pattern p = Pattern.compile("[\\\'\\*\\~]")
// 创建 Matcher 对象
Matcher m = p.matcher("String str = \"t\'e*s~t\" ")
// 替换
String newstring = m.replaceAll("[$0]")
效果如下:
正则参考 http://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F
\b{keywords}\b(?=[^<>]*<)把上面{keywords}替换成你的关键字,注意把{}也替换掉,我是为了让你看明白换哪才加的{}。
然后你找到匹配上面的正则的地方后替换成你想替换的字符串就好了,全部替换记得用全局修饰符