温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JAVA中JSON数据的大字段怎么利用正则表达式进行替换

发布时间:2020-12-08 14:53:03 来源:亿速云 阅读:369 作者:Leah 栏目:开发技术

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":"*"}

看完上述内容,你们掌握JAVA中JSON数据的大字段怎么利用正则表达式进行替换的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI