簡體   English   中英

如何在 Java 中替換部分電子郵件域字符串

[英]How to replace a part of email domain string in Java

我有一封電子郵件,例如 - john.doe@ny.ps.com 或 john.doe@ma.ps.com,我想用 john.doe@ps.com 替換所有電子郵件,特別是如果它們有前綴ps之前。

到目前為止我試過

final String string = "john.doe@ny.ps.com";
final Pattern pattern = Pattern.compile("\\@[^.ps]*");
final Matcher matcher = pattern.matcher(string);    
final String result = matcher.replaceAll("");

但最終結果是 john.doe.ps.com 而不是 john.doe@ps.com

您可以在一次替換中執行此操作。

使用此正則表達式搜索:

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

並用空字符串替換。

正則表達式演示

Java 代碼:

final String string = "john.doe@ny.ps.com";
result = string.replaceFirst("(?<=@)(?:[^\\n.]+\\.)*(?=ps\\.)", "");
//=> john.doe@ps.com

正則表達式詳細信息:

  • (?<=@) :向后斷言我們在當前位置之前有@
  • (?:[^.]+\.)* :匹配 1+ 個非點字符,后跟一個點。 重復此組 0 次或多次。 - (?=ps\.) :提前斷言我們有ps. 領先於當前位置

我通過添加@使其工作。

final String result = matcher.replaceAll("@");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM