[英]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.