用到Json与replaceAll

Http拦截脚本中经常需要替换,replace虽然不需要处理特殊字符,但是不能匹配多个,ReplaceAll能够使用正则,不过需要处理的转移实在太多

比如,需要替换一次\,需要输入四次\,而其他脚本进行注册表写入时,又需要转移那么需要输入8次\,对于这种情况,又不能简单的把所有斜杠翻倍。

简单点处理方式,

replace("\\4","\\\\");

采用自定义关键字,替换4次斜杠

下面是replaceAll处理特殊字符所需要斜杠个数

package json;

public class ReplaceAllTest {

public static void main(String[] args) {

//正则表达式中特殊字符需要//转义  ^词首 $词尾 *多个字符串>0 +多个字符串>1 ()左右括号

puts("a~!@#$%^&*()_+b".replaceAll("~!@#\\$%\\^&\\*\\(\\)_\\+", "11~!@#\\$%^&*()_+11"));  //$在后面的字符串中需要转义

puts("a`-=b".replaceAll("`-=", "22`-=22"));

puts("----keyboard2----");

puts("a[b","a[b".replaceAll("\\[", "33[44"));  //左方括号需要转义

puts("a{b","a{b".replaceAll("\\{", "33{44"));  //左大括号需要转义

puts("a]}b","a]}b".replaceAll("]}", "33]}44"));

puts("a\\b","a\\b".replaceAll("\\\\", "11\\\\22"));  //斜杠,需要两次转义才是输出结果

puts("a3|4b","a3|4b".replaceAll("3\\|4", "11|22"));     //竖杆,正则表示或,需要转义

puts("----keyboard3----");

puts("a;:'\"b","a;:'\"b".replaceAll(";:'\"", "11;:'\"22")); //引号,只需要一个转义/,两个报错,三个与一个同样效果

puts("a;:'\"b","a;:'\"b".replaceAll(";:'\\\"", "11;:'\\\"22"));

puts("a\\\"b","a\\\"b".replaceAll("\\\\\"", "111"));

puts("a\\\"b","a\\\"b".replaceAll("\\\\\\\"", "111"));

puts("----keyboard4----");

puts("a,.<>b/","a,.<>b/".replaceAll(",\\.<>/", "11,.<>/22"));

puts("a?b","a?b".replaceAll("\\?", "11?22"));         //问号,正则中表示0~1个前面字符串

puts("特殊字符中,正则表达式用到的字符都需要\\进行转义");

puts("需要关注\"、\\前面的斜杠可以看作本身的一部分 ");

puts("需要关注$, 替换后的$同样需要进行转义");

puts("-----正则---转义字符--------");

puts("a33b".replaceAll("\\d+", "11\\\\d+22")); //正常转义字符使用--替换数字

puts("a-3a3-b".replaceAll("-(\\w+)-", "11\\\\w+22")); //正常转义字符使用--替换字母或数字

puts("a\\db".replaceAll("\\\\d", "11\\\\d22")); //替换字符串中的\d 为11\d22---与替换\一样

puts("a\\wb".replaceAll("\\\\w", "11\\\\w22")); //替换字符串中的\w 为11\w22---与替换\一样

puts("a\\$b".replaceAll("\\\\\\$", "11\\\\\\$22")); //替换字符串中的\$ 为11\$22---与替换\+$一样\\\\+\\$

puts("-------------综上 单个字符斜杠使用-----"

+ "\r\n只需要一次斜杠的有\" "

+ "\r\n需要两次斜杠的有:表示自身$ ^ ( ) { [ | ? * . + "

+ "\r\n需要两次斜杠的有:表示正则d D w W s S t r n b..."

+ "\r\n需要三次斜杠的有:表示自身\" 与一次效果相同 "

+ "\r\n需要四次斜杠的有:表示自身\\ "

+ "\r\n---------两个字符斜杠使用---------------"

+ "\r\n例如替换\\d,需要四次斜杠"

+ "\r\n例如替换\\\",需要五次斜杠"

+ "\r\n例如替换\\{ \\$ \\*,需要六次斜杠"

+ "\r\n例如替换\\\",使用七次斜杠与五次一样"

);

// puts("----中文字符-当作普通字符使用-----");

// puts("c~!@#¥%……&*()——+-=n".replaceAll("~!@#¥%……&*()——+-=","11~!@#¥%……&*()——+-=00"));

// puts("a[]{}、|b".replaceAll("[]{}、|", "11[]{}、|00"));

// puts("a;:‘’“”b".replaceAll(";:‘’“”", "11;:‘’“”00"));

// puts("a,。《》/?b".replaceAll(",。《》/?", "11,。《》/?00"));

}

public static void puts(String s){

System.out.println(s);

}

public static void puts(String s,String s2){

System.out.println(s+"\t"+s2);

}

}

输出结果为

a11~!@#$%^&*()_+11b

a22`-=22b

----keyboard2----

a[b a33[44b

a{b a33{44b

a]}b a33]}44b

a\b a11\22b

a3|4b a11|22b

----keyboard3----

a;:'"b a11;:'"22b

a;:'"b a11;:'"22b

a\"b a111b

a\"b a111b

----keyboard4----

a,.<>b/ a,.<>b/

a?b a11?22b

特殊字符中,正则表达式用到的字符都需要\进行转义

需要关注"、\前面的斜杠可以看作本身的一部分

需要关注$, 替换后的$同样需要进行转义

-----正则---转义字符--------

a11\d+22b

a11\w+22b

a11\d22b

a11\w22b

a11\$22b

-------------综上 单个字符斜杠使用-----

只需要一次斜杠的有"

需要两次斜杠的有:表示自身$ ^ ( ) { [ | ? * . +

需要两次斜杠的有:表示正则d D w W s S t r n b...

需要三次斜杠的有:表示自身" 与一次效果相同

需要四次斜杠的有:表示自身\

---------两个字符斜杠使用---------------

例如替换\d,需要四次斜杠

例如替换\",需要五次斜杠

例如替换\{ \$ \*,需要六次斜杠

例如替换\",使用七次斜杠与五次一样

ReplaceAll 特殊字符处理的更多相关文章

  1. (转)正则表达式:string.replaceAll()中的特殊字符($ \)与matcher.appendReplacement

    string.replaceAll中的特殊字符 string.replaceAll(String regex, String replacement)中的replacement参数即替换内容中含有特殊 ...

  2. java replaceall 用法:处理特殊字符

    public class TryDotRegEx { public static void main(String[] args) { // TODO Auto-generated method st ...

  3. 特殊字符导致用正则表达式进行字符串替换失败,Java replaceAll()方法报错Illegal group reference

    String str = "给商品||?>\\n阳澄湖大闸蟹!@#$%^&*()_+-=?:\",.]\\|~.,\/??\\\\|\\br点赞" Stri ...

  4. 你真的会用java replaceAll函数吗?

    replace.replaceAll.replaceFirst这三个函数会java的同学估计都用过,笔者已经用了2年多,可是,我们真的懂他们吗? 概述一下他们三个的用法: · replace(Char ...

  5. 经历:Java中字符串中按照多个字符拆分或替换:split()和replaceAll()

    一.replaceAll() 今天,遇到了这样的一个字符串[如下代码]: String s="@0|新港@0|天津@0|东莞@0|南沙@0|营口@0|钦州@0|上海@0|汕头@0|连云港@0 ...

  6. Java 截取反斜杠--java使用split拆分特殊字符

    Java 截取反斜杠 replaceAll和split (“\”) 问题解决办法 xxx.split("\\") 显然得不到想要的结果 正确方法 xxx.split("\ ...

  7. 特殊字符 js处理

    2.特殊字符传递过程中的处理 (1)js页面的处理 var url= "#@+&这些带有特殊字符"; url=encodeURI(encodeURI(url));//转码两 ...

  8. String的replace和replaceAll

    replace(CharSequence target, CharSequence replacement) 这里CharSequence是一个接口 实现类包括CharBuffer, Segement ...

  9. 过滤Java中特殊字符

    过滤Java中特殊字符 /** * @Title:FilterString.java * @Package:com.you.model * @Description:过滤Java中特殊字符 * @Au ...

随机推荐

  1. xml转dict

    xml转dict 最开始的时候一直是按格式比较严谨的XML格式进行的转换,所以一般只需要考虑两种情况就可以了,即各个节点或者子节点全相同或者全不同,全相同按list处理,全不同按dict处理,这么一想 ...

  2. CF 82 D.Two out of Three

    前言 全网唯一不同题解 设 \(f[i][j]\) 表示第 \(i\) 次选取留下来的数是 \(k\) 的最小花费 枚举前面的留下来的点 \(k\) 当前能留下的点只有 \((2*i),(2*i+1) ...

  3. flask之模板之继承

    一:继承 基类模板base.html  中在进行挖坑 {% block 坑的名字%}{% endblock %} 子类模板test.html 中 通过 {% extends "base.ht ...

  4. javaSE之运行时异常和编译时异常

    运行时异常继承自RuntimeException; package foundationEnhance; public class Person { private int age; public P ...

  5. Django2 --- cookie

    1. 什么是cookie ?用途是什么? Cookies是一些存储在用户电脑上的小文件.它是被设计用来保存一些站点的用户数据,这样能够让服务器为这样的用户定制内容,后者页面代码能够获取到Cookie值 ...

  6. C#语句,console,C#//,/**/

    ].

  7. spring boot 应用发布到Harbor上

    具体的harbor配置和docker配置可以查看前面几篇,也包含了我遇到的问题 settings.xml配置 <server> <id>docker-hub</id> ...

  8. vue项目中使用element的dialog中引入ztree却不能初始化解决办法

    一开始我在 里边写的,发现获取不到,那么采用dialog自带的回调函数,窗口打开后opend进行处理, 结果:

  9. Qt5.1 静态编译

    下载Qt5.2.1的Qt-every 解压 cd qt-everywhere-opensource-src-5.1.1/  ./configure -prefix 安装目录 -release -sta ...

  10. openlayers筛选图层

    很多时候需要筛选图层,例如选择交互(ol.interaction.Select). 图片来自官方:https://openlayers.org/en/v4.6.5/apidoc/ol.interact ...