обфусцировать пароль с помощью регулярных выражений Java - PullRequest
0 голосов
/ 18 марта 2019

У меня есть это регулярное выражение для маскировки пароля

myString.replaceAll(
    "<.{1,}:Password>.{1,}</.{1,}:Password>",
    "<!--<Password></Password> Removed-->");

Когда myString содержит следующую строку, он успешно скрывает пароль

<abc:Password>myPassword</abc:Password>

Но если myString содержит xml без префикса схемы, т.е.

<Password>myPassword</Password> it does not obfuscate the password.

Как расширить существующее регулярное выражение, чтобы оно обрабатывало оба случая?

1 Ответ

0 голосов
/ 18 марта 2019

В настоящее время вы указываете диапазон числа ожидаемых символов, используя фигурные скобки. ({1,})

Вместо этого вы можете либо +, либо * представлять "один или несколько" (+) или "ноль или более" (*) предыдущего символа. Другими словами, * похож на {0,}, а + совпадает с {1,}. Кроме того, вы можете использовать ? для обозначения «ноль или один», аналогично {0,1}.

Используя эти знания, мы можем искать символ (ы), за которым следует двоеточие перед именем элемента (Password), используя этот шаблон:

.+:

Затем мы можем поместить это внутри группы без захвата, поместив ее в набор скобок с ?: впереди (чтобы сделать его не захватывающим), и заставить его искать ноль или больше примеры этого.

(?:.+:)?

Таким образом, ваша строка может измениться на:

<(?:.+:)?Password>.+</(?:.+:)?Password>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...