我的字符串如下:
{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=).*?(?=})", "****");
我正在尝试String:
SNMP_COMMUNITY
但它会截断SNMP_COMMUNITY
我想屏蔽SNMP_COMMUNITY
字段的值。 CheckForUpdateAsync
可以有任何价值。
答案 0 :(得分:3)
您正在尝试使用.*?(?=})
更改\\[.*?\\]
,如下所示:
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]}}
答案 1 :(得分:0)
我喜欢正则表达式问题的所有不同答案,这是我的,并附有解释:
replacedMapStr = mapStr.replaceAll("SNMP_COMMUNITY=\[[^\]]*\]", "SNMP_COMMUNITY=[****]");
部分正则表达式:
?
的魔力。这是一个包含右括号的否定字符类。这里的意思是“任意数量的字符不是右括号。所以你可以看到扫描仪只是向前移动直到它找到一个右括号。反斜杠在那里表明我们的意思是一个右括号字符而不是结束角色类。在此处查看此部分:http://refiddle.com/refiddles/5b16826175622d707f180000