регулярное выражение для маскировки определенного поля - PullRequest
0 голосов
/ 05 июня 2018

У меня есть строка, подобная приведенной ниже:

{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 может иметь любое значение.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Мне нравятся все разные ответы на вопросы регулярных выражений, вот мой, с объяснением:

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

Регулярное выражение по частям:

  • SNMP_COMMUNITY =
    • Буквально эти символы подряд
  • \ [
    • Левая скобка
  • [^ \]] *
    • Это магия, позволяющая избегать использования ?.Это отрицательный класс символов, который содержит правую скобку.Смысл здесь: «Любое количество символов, которые не являются правильными скобками. Таким образом, вы можете видеть, что сканер будет просто двигаться вперед, пока не найдет правильную скобку. Обратный слеш там, чтобы показать, что мы имеем в виду символ правой скобки, а недля завершения класса символов.
  • ]
    • Правая скобка

Смотрите эту часть в действии здесь:http://refiddle.com/refiddles/5b16826175622d707f180000

0 голосов
/ 05 июня 2018

Вы близки, попытайтесь изменить .*?(?=}) на \\[.*?\\] примерно так:

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]}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...