929. 独特的电子邮件地址(正则表达式匹配)

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