场景1:在一处操作中想将一段字符串中的百分号"%"添加一个转义符"\";但是已经有转义符的就不需要处理;
即将字符串"\%aa\%bbcc%%asdf",处理后变成"\%aa\%bbcc\%\%asdf";尝试了多次,最终通过反向否定预查实现了功能;
处理代码如下:
String str1 ="\\%aa\\%bbcc%%asdf";String desStr1=str1.replaceAll("(?<!\\\\)%", "\\\\%");System.out.println("处理前str1:"+str1);System.out.println("处理后desStr1:"+desStr1);
结果:
处理前str1:\%aa\%bbcc%%asdf
处理后desStr1:\%aa\%bbcc\%\%asdf
这里有一点需要注意的就是在java中"\\"表示的是正则表达式中的"\";所以想表达一个普通的"\",则需要写成这样"\\\\";
场景2:与1类似,想将一段代码中"<"替换成转义字符"<",但是如果是img标签即"<img"则不处理,方法类似:
String strlt="sddddddddda<sdd<img";
String destStrlt =strlt.replaceAll("<(?!img)", "\\<");
结果:
处理前:sddddddddda<sdd<img
处理后:sddddddddda<sdd<img