Как заменить часть адреса электронной почты с помощью регулярных выражений? - PullRequest
3 голосов
/ 26 января 2020

Я хочу заменить часть адреса электронной почты с помощью регулярных выражений. Как это сделать ?

Например: адрес электронной почты test.email+alex@gmail.com существует, и я хочу заменить часть этого адреса электронной почты с + до @ на '', чтобы конечная строка была test.email@gmail.com.

Я попробовал с этим ниже:

str.replaceAll("[^+[a-z]]","");

Ответы [ 2 ]

4 голосов
/ 26 января 2020

Вы можете попробовать это:

\+[^@]*

Объяснение:

  1. \+ соответствует +, где \ - escape-символ
  2. [^@]* соответствует что угодно, пока не достигнет @, где * означает ноль или более

Код приведен ниже:

final String string = "test.email+alex@gmail.com";
final Pattern pattern = Pattern.compile("\\+[^@]*");
final Matcher matcher = pattern.matcher(string);    
final String result = matcher.replaceAll("");

Контрольный пример Regex

1 голос
/ 26 января 2020

Если вы хотите сопоставить либо точку, либо знак плюс до @, вы можете использовать положительный прогноз, чтобы установить @ справа для обоих случаев и перечислить каждую опцию, используя чередование .

(?:\.|\+[^@]*)(?=.*@)

Объяснение

  • (?: Группа без захвата
    • \. Совпадение с точкой
    • | Или
    • \+[^@]* Совпадение + и 0+ раз с любым символом, кроме точки
  • ) Закрыть группу
  • (?=.*@) Положительный взгляд, утверждаем @ направо

Regex demo | Java демо

In Java

str.replaceAll("(?:\\.|\\+[^@]*)(?=.*@)","")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...