java replaceall 问号_ReplaceAll 特殊字符处理-程序员宅基地

技术标签: java 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[ba33[44b

a{ba33{44b

a]}ba33]}44b

a\ba11\22b

a3|4ba11|22b

----keyboard3----

a;:'"ba11;:'"22b

a;:'"ba11;:'"22b

a\"ba111b

a\"ba111b

----keyboard4----

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

a?ba11?22b

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

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

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

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

a11\d+22b

a11\w+22b

a11\d22b

a11\w22b

a11\$22b

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

只需要一次斜杠的有"

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

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

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

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

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

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

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

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42668301/article/details/114204564

智能推荐

google vr 入门之制作简易的VR播放器(三),android学生管理系统项目视频_自己的android app中集成vr浏览器-程序员宅基地

文章浏览阅读192次。// 使用google vr 添加的compile ‘com.google.vr:sdk-base:1.40.0’compile ‘com.google.vr:sdk-audio:1.40.0’compile ‘com.google.vr:sdk-videowidget:1.40.0’添加这些依赖包之后google给我们的生成了哪些library库呢?![](https://img-blog.csdn.net/20170427162756208?watermark/2/text/aHR0cDovL_自己的android app中集成vr浏览器

db和dbm_it dbm-程序员宅基地

文章浏览阅读1.8k次。DB :DB是一个纯计数单位:dB = 10logX。dB的意义其实再简单不过了,就是把一个很大(后面跟一长串0的)或者很小(前面有一长串0的)的数比较简短地表示出来。如:X = 1000000000000000(多少个了?)= 10logX = 150 dB X = 0.000000000000001 = 10logX = -150 dB DB在缺省情况下总是定义功率单位,以 1_it dbm

芯片验证从零开始系列(一)——芯片验证概论-程序员宅基地

文章浏览阅读1w次,点赞7次,收藏78次。芯片验证从零开始系列(一)——芯片验证概论芯片开发流程动态验证技术静态验证技术Emulation和FPGA原型开发由于最近一个比赛要用到UVM验证,顺便多一门以后求职的手艺,准备系统地学习一下SV和UVM,也可以为之后的毕业论文和发展方向做一些准备。芯片开发流程1)市场人员和客户沟通确定用户需求2)系统设计人员按照功能划分为各个子系统3)子系统由设计团队开发实现4)验证人员对设计功能展开验证,发现设计缺陷,交由设计人员修正5)验证没有出现漏洞后,交由后端人员进行综合,布局布线6)后端人员将_芯片验证

RabbitMQ详解(一):RabbitMQ相关概念_obpmq-程序员宅基地

文章浏览阅读8.9k次,点赞24次,收藏26次。RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要对RabbitMQ有所了解,本系列是RabbitMQ快速入门文章,主要内容包括RabbitMQ是什么、RabbitMQ核心概念、五种消息模型、用Docker安装RabbitMQ等。_obpmq

HTML 网页自动刷新_html多线程刷新网页-程序员宅基地

文章浏览阅读5.2k次,点赞2次,收藏24次。HTML网页自动刷新方法在进行HTML网页编写的过程中,往往需要及时的编写反馈,反复的在编辑器和浏览器窗之间进行切换是一个很繁琐的事情,如果在编辑器上使用插件,我也不太愿意,繁琐而且不安全。下面介绍三种不需要插件的自动刷新方法。第一种使用meta标签在html的文档头中,在<head>标签中添加meta属性,像下面“ <meta http-equiv="refresh" content="10">其中前面是刷新所需的meta标识,后面的content是刷新的秒数。第二_html多线程刷新网页

使用@EventListener注解,只启动一次监听事件_@eventlistener 被启动了2次-程序员宅基地

文章浏览阅读726次。背景:当在写一个Spring项目时,配置了事件监听器,在项目启动的时候会自己启动一次,之后如果再调用Controller接口的时候,他还会自己再启动,这个时候我们的业务场景只需要启动一次该怎么办呢?解答: @EventListener public void listener1(ApplicationEvent event) { //解决controller调用接口的时候多次启动event实例 ContextRefreshedEvent event1 = _@eventlistener 被启动了2次

随便推点

Halcon 3D定位方法-程序员宅基地

文章浏览阅读1.9k次。Descriptor-based Matchinguncalibrated mathcing return perspective map,calibrated matching return pose.find_calib_descriptor_model()Deformable MatchingFind objects with perspective distort..._halcon 3d定位

用 Hadoop 进行分布式并行编程, 第 3 部分_hdfs dfs -copyfromlocal /home/hadoop/temp/* /tempd-程序员宅基地

文章浏览阅读706次。Hadoop 是一个实现了 MapReduce 计算模型的开源分布式并行编程框架,借助于 Hadoop, 程序员可以轻松地编写分布式并行程序,将其运行于计算机集群上,完成海量数据的计算。在本文中,详细介绍了如何部署 Hadoop 分布式运行环境,如何让程序分布式运行于多台普通的计算机上,如何使用 IBM MapReduce Tools 轻松地将 MapReduce 程序部署到 Hadoop 分_hdfs dfs -copyfromlocal /home/hadoop/temp/* /tempdir

Linux进阶 apache服务器;虚拟主机_虚拟机安装开启httpd服务-程序员宅基地

文章浏览阅读309次。1.关闭防火墙systemctlstopfirewalld(暂时关闭,重启后恢复)修改前------将index.html改为hello.html。2.设置宽容模式setenforce0(暂时性设置)配置同一ip不同端口的虚拟主机访问apache服务器。(1)安装httpd(先挂载,用yum安装)(4)修改配置文件httpd.html。(3)创建文件hello.html。(2)启动httpd服务。(5)重启httpd服务。(5)重启httpd服务。(5)重启httpd服务。..._虚拟机安装开启httpd服务

软件测试随笔-程序员宅基地

文章浏览阅读73次。记录一些软件测试工作中的想法。1)软件测试岗位价值在IT行业里是比较低的,为了更好的体现自身价值,我认为软件测试从业者应该比业务更懂技术,比技术更懂业务。同时具备很好的沟通协调能力。让自己变成万能胶。2)软件测试体现价值的点:1.发现bug2.提供信心3.提供信息4.预防缺陷3)软件测试一定要考虑测试的覆盖率4)测试工作要体现测试技术,而不是测试工..._软件测试随笔

VB程序设计教程(第四版) 龚沛曾_龚沛曾vb.pdf-程序员宅基地

文章浏览阅读1.6w次,点赞17次,收藏47次。VB程序设计教程(第四版) 龚沛曾 课后习题答案目录第一章课后答案第二章课后答案第三章课后答案第四章课后答案第五章课后答案第六章课后答案第七章课后答案第八章课后答案....第一章课后答案1、简述Visual Basic的特点。答:(1)具有基于对象的可视化设计工具(2)事件驱动的编程机制(3)提供易学易用的应用程序集成开发环境(4..._龚沛曾vb.pdf

Matlab神经网络语音增强,基于BP神经网络的语音增强研究-程序员宅基地

文章浏览阅读452次。曰髯?分类号:论文编号:2丛坦丝旦生丛密级:公开贵州大学2009届硕士研究生学位论文基于即神经网络的语音增强研究学科专业:电路与系统研究方向:模式识别导师:刘宇红教授研究生:周元芬中国贵州’贵阳2009年5月摘要-5Abstract-6第一章绪言11.1引言11.2语音增强的意义与研究现状21.2.1语音增强的目的21.2.2语音增强的意义21.2.3国内外语音增强研究现状41.2.4语音增强的算..._基于神经网络的语音增强