java - 正则表达式来掩盖某些字段
问题描述
我有如下字符串:
{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
可以有任何价值。
解决方案
你很接近尝试.*?(?=})
像\\[.*?\\]
这样改变:
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]}}