最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
利用JAVA正则表达式轻松替换JSON中的大字段代码示例
时间:2020-12-08 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下利用JAVA正则表达式轻松替换JSON中的大字段代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
正则表达式
我们在这里就不详细介绍正则表达式的用法了,只针对大字段匹配相关的正则表达式进行讲解。
匹配JSON 字段的字段值的正则表达式
“:s*".+?"”
匹配超过1000的长度的正则表达式
.{1000,}
结合以上的两个正则表达式
(?=.{1000,})(:s*".+?")
在JAVA代码中的实现
在这里写一个小例子
String json = "{"name":"Tom","px":"abcdefg11111111111111111111111111"}"; String pattern = "(?=.{10,})(:\s*\".+?\")"; json = json.replaceAll(pattern, ":"*""); System.out.println(json);
执行结果
{"name":"*","px":"*"}
怎么回事?和预想不一致,看来事情并不那样的简单,查一下?=的用法,现在这种写法相当来说是两个正则的逻辑与, .{10,}是匹配了一行超过10个字符,而(:s*".+?")则匹配了json的值项目,也就是说只要这一行超过了10个字符,那么其中的json值都会被替换。知道了原因我们就好办了。把两个正则合为一个正则不就OK了吗。
合并正则表达式
我们改善以下上面的例子,
String json = "{"name":"Tom","px":"abcdefg11111111111111111111111111"}"; String pattern = "(:\s*\".{10,}?\")"; json = json.replaceAll(pattern, ":"*""); System.out.println(json);
执行结果
{"name":"*"abcdefg11111111111111111111111111"}
阿来,怎么会这样。他竟然匹配到了。。。
{“name”:“Tom”,“px”:“abcdefg11111111111111111111111111”}
随然还是不对,但离胜利只差一步了,我们在匹配中用的是.{10,},可以匹配任何字符,因此才会造成这种问题,那么我们把正常值中不应该出现的字符排除掉不就可以了吗。
最终结果
String json = "{"name":"Tom","px":"abcdefg11111111111111111111111111"}"; String pattern = "(:s*"[^,":]{10,}?")"; json = json.replaceAll(pattern, ":"*""); System.out.println(json);
执行结果
{"name":"Tom","px":"*"}
我们终于得到了想要的结果。
相关文章
- SpringBoot自定义bean绑定解析 10-24
- Javaweb工程运行报错HTTP Status 404解决教程 10-20
- JAVA获取jvm和操作系统相关信息方法 10-20
- BeanFactory和FactoryBean的区别讲解 10-20
- 微信小程序的宿主环境实现教程 10-10
- dispatchEvent解决重叠元素响应事件教程 10-10