java 中json替换_利用JAVA正则表达式轻松替换JSON中的大字段代码示例

本篇文章小编给大家分享一下利用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":"*"}

我们终于得到了想要的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值