- 929. 独特的电子邮件地址(正则表达式匹配)">929. 独特的电子邮件地址(正则表达式匹配)
929. 独特的电子邮件地址(正则表达式匹配)
regex r("(?:\\.)(?=.*@)|(?:\\+.*)(?=@)"); // ?:的意思是匹配,但是不选择,也就是说删除。两个斜杠是为了转义.,?=是匹配等号后面表达式的前面的东西。因此为了匹配.应该是.*@表示,@以及前面的任意个字符,而后面为了匹配+.*,这个在@的前面,中间没有间隔,因此只需要?=@即可。
class Solution {
public:
int numUniqueEmails(vector<string>& emails) {
unordered_set<string> dict;
for (auto& i : emails) {
cout << regex_replace(i, r, "") << endl;
dict.insert(regex_replace(i, r, ""));
}
return dict.size();
}
};