Можете ли вы заменить символы, которые существуют между двумя опорными точками, с помощью регулярного выражения?Да.
Взгляните на полезные ресурсы, приведенные ниже.
Начало строки и конец якоря строки
SO Вопрос о запутывании писем с помощьюШаблоны REGEX
Вы на правильном пути.Ваш шаблон должен содержать не менее 3 групп захвата .Первая группа захвата будет первым символом в строке, адрес электронной почты в вашем примере.Вторая группа захвата будет символами от позиции 2 до предпоследней позиции перед символом @
.А третьей группой захвата станут остальные персонажи.Используя ваш адрес электронной почты в качестве примера:
[d] [ineshkani.] [n@gmail.com]
Capture group 1 --- Capture group 2 --- Capture group 3
Теперь, когда он захвачен правильно, мы хотим выполнить замену для группы захвата 2, которая заменит каждому символу какое-то значение обфускации, например *.Для этого потребуется обратная ссылка для группы 2.
([\w|\d]{1}) # This says match either a word or digit char occurring once
([\S]+) # Match a non whitespace character with a greedy qualifier
(\S{1}\@\S+) # Match a non whitespace character then an '@' then the rest of the characters until whitespace is found.
Теперь вам нужно будет использовать обратную ссылку на группу 2 в вашей функции замены Java.См. этот SO-ответ , где приведен хороший пример способов замены регулярных выражений в группах захвата.Вам нужно будет использовать .replaceAll()
и передать группу захвата и строку замены.Я надеюсь, что это поможет вам решить вашу проблему и понять, что происходит, когда вы используете регулярные выражения для замены строк в Java.
Подробнее о жадном квантификаторе см. В руководстве по регулярным выражениям.