首页 > 解决方案 > 正则表达式来掩盖某些字段

问题描述

我有如下字符串:

{5b4888ad-53cc-4fa8-9e0f-dbb339b238fd={NETFLOW_IP=[1.1.1.1, 2.2.2.2], SNMP_COMMUNITY=[public], SNMP_TRAP_IP=[1.1.1.1]}}

我想要一个最终的字符串:

{5b4888ad-53cc-4fa8-9e0f-dbb339b238fd={NETFLOW_IP=[1.1.1.1, 2.2.2.2], SNMP_COMMUNITY=[****], SNMP_TRAP_IP=[1.1.1.1]}}

我正在尝试字符串:

replacedMapStr = mapStr.replaceAll("(?<=SNMP_COMMUNITY=).*?(?=})", "****");

但它会在之后截断所有字符 SNMP_COMMUNITY

我想掩盖SNMP_COMMUNITY字段的值。SNMP_COMMUNITY可以有任何价值。

标签: javaregexstring

解决方案


你很接近尝试.*?(?=})\\[.*?\\]这样改变:

String replacedMapStr = mapStr.replaceAll("(?<=SNMP_COMMUNITY=)\\[.*?\\]", "[****]");
                                                               ^^^^^^^^^    ^    ^

输出

{5b4888ad-53cc-4fa8-9e0f-dbb339b238fd={NETFLOW_IP=[1.1.1.1, 2.2.2.2], SNMP_COMMUNITY=[****], SNMP_TRAP_IP=[1.1.1.1]}}

推荐阅读