ReplaceAll 特殊字符处理
用到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 特殊字符处理的更多相关文章
- (转)正则表达式:string.replaceAll()中的特殊字符($ \)与matcher.appendReplacement
string.replaceAll中的特殊字符 string.replaceAll(String regex, String replacement)中的replacement参数即替换内容中含有特殊 ...
- java replaceall 用法:处理特殊字符
public class TryDotRegEx { public static void main(String[] args) { // TODO Auto-generated method st ...
- 特殊字符导致用正则表达式进行字符串替换失败,Java replaceAll()方法报错Illegal group reference
String str = "给商品||?>\\n阳澄湖大闸蟹!@#$%^&*()_+-=?:\",.]\\|~.,\/??\\\\|\\br点赞" Stri ...
- 你真的会用java replaceAll函数吗?
replace.replaceAll.replaceFirst这三个函数会java的同学估计都用过,笔者已经用了2年多,可是,我们真的懂他们吗? 概述一下他们三个的用法: · replace(Char ...
- 经历:Java中字符串中按照多个字符拆分或替换:split()和replaceAll()
一.replaceAll() 今天,遇到了这样的一个字符串[如下代码]: String s="@0|新港@0|天津@0|东莞@0|南沙@0|营口@0|钦州@0|上海@0|汕头@0|连云港@0 ...
- Java 截取反斜杠--java使用split拆分特殊字符
Java 截取反斜杠 replaceAll和split (“\”) 问题解决办法 xxx.split("\\") 显然得不到想要的结果 正确方法 xxx.split("\ ...
- 特殊字符 js处理
2.特殊字符传递过程中的处理 (1)js页面的处理 var url= "#@+&这些带有特殊字符"; url=encodeURI(encodeURI(url));//转码两 ...
- String的replace和replaceAll
replace(CharSequence target, CharSequence replacement) 这里CharSequence是一个接口 实现类包括CharBuffer, Segement ...
- 过滤Java中特殊字符
过滤Java中特殊字符 /** * @Title:FilterString.java * @Package:com.you.model * @Description:过滤Java中特殊字符 * @Au ...
随机推荐
- Sql Server 压缩数据库占用空间
1.删除数据库库中不必要的数据2. 在数据库上右击,任务,收缩,文件,在收缩操作上选择在未使用的空间前重新组织页,将文件收缩到的最后一行为最小为XXM,在前面的输入框中填入该值,然后点击确定3.分离该 ...
- 我是如何用python给Thunar写GUI插件的 (pygtk+glade)
更新:zip乱码的问题可以通过安装patch之后的p7zip-natspec和unzip-natspec解决(archlinuxcn源),而仍使用Engrampa做前端.此文重点在pygtk... 问 ...
- AQS简介以及源码分析
参考链接:https://www.jianshu.com/p/da9d051dcc3d 参考链接:https://www.cnblogs.com/waterystone/p/4920797.html
- Java实现代理服务器
Web代理(proxy)服务器是网络的中间实体. 代理位于Web客户端和Web服务器之间,扮演"中间人"的角色. HTTP的代理服务器即是Web服务器又是Web客户端. 代理服务器 ...
- UML快速理解
在团队协作过程中最常见的就是开会.开会最常用的就是图,而图中最常见的就是流程图.时序图.类图,这三个图可以清楚的描述你想解释的内容.学好类图不仅仅能帮助自己更清楚的梳理业务,还能提高开会效率. 上图是 ...
- django之子应用中开发视图函数
一:修改视图函数 报错:ImportError: No module named 'django' 原因是:pycharm中的解释器未选择虚拟环境里面的python3 from django.shor ...
- 前端面试题:CSS实现水平垂直居中
这是一个挺常见的前端面试题,但是没有做过总结.有的时候可能会使用完了,很长一段时间不去使用,会慢慢忘记.所以,温故而知新,还是很有必要的. 一.绝对定位元素的居中实现 这一种工作中用的应该是最多的,兼 ...
- [洛谷P3205] HNOI2010 合唱队
问题描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为Hi米(1000<=Hi<= ...
- Eclipse使用maven创建SSM-web项目
1.环境准备 (1)maven:apache-maven-3.5.2,我的maven安装在D:\apache-maven-3.5.2,eclipse中maven配置如下: 先add ,添加好自己的ma ...
- Linux下安装Harbor 1.8.0 仓库的安装和使用(亲测)
根据Harbor官方描述: Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distri ...