我想搜索&替换电子邮件列表并审查它们的最后4个字母。 我应该使用什么样的正则表达式?
例如:
从
abcd123@hotmail.com
9920ds11@gmail.com
至
abcxxxx@hotmail.com
9920xxxx@gmail.com
答案 0 :(得分:1)
这种模式应该有效:
<强> [搜索] 强>
.{1,4}(?=\@.*?)
<强> [取代] 强>
xxxx
xxxx@example.com
答案 1 :(得分:0)
我刚刚注意到您正在使用Sublime Text。你可以轻松地做到:
(.*)(....)(@.*)
$1xxxx$3
注意:它只会替换至少包含4个字符的电子邮件,而不会触及其他字符。
在 C++11
中,您可以使用:
if (s.substr(0, s.find('@')).size() >= 4) // only handle email with >= 4 chars
{
const regex r("(.*)(....)(@.*)");
const string fmt("$1xxxx$3");
string res = regex_replace(s, r, fmt);
}
答案 2 :(得分:0)
在Java
正则表达式是[\w.!#$%&'*+=?^{}|~\/-]{4}(?=@)
电子邮件根据http://en.wikipedia.org/wiki/Email_address
接受字符点击此处查看演示
CODE:
String test = "abcd123@hotmail.com";
test = test.replace("[\\w.!#$%&'*+=?^`{}|~\\/-]{4}(?=@)","xxxx");
System.out.println(test)
当电子邮件少于4个字符时,不会进行替换