当前位置: 代码迷 >> 综合 >> java replaceAll()正则表达式替换不以某个字符开头,不以某个字符结束
  详细解决方案

java replaceAll()正则表达式替换不以某个字符开头,不以某个字符结束

热度:66   发布时间:2023-12-15 13:20:05.0

场景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类似,想将一段代码中"<"替换成转义字符"&lt;",但是如果是img标签即"<img"则不处理,方法类似:

String strlt="sddddddddda<sdd<img";
String destStrlt =strlt.replaceAll("<(?!img)", "\\&lt;");

结果:

处理前:sddddddddda<sdd<img
处理后:sddddddddda&lt;sdd<img

 

  相关解决方案