有必要使用正则表达式从给定的字符串中选择所有电子邮件地址。我的代码:
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string emails = "awlefla aaa@gmail.ru adlf111 2 * ed@ggg.er fgdfgd1gd141";
std::regex reg2("[a-z0-9_][a-z0-9_\.-]*[a-z0-9_]@([a-z0-9]+[a-z0-9_-]*[a-z0-9]\.)+[a-z0-9]{2,}");
std::smatch matches;
while (std::regex_search(emails, matches, reg2)) {
std::cout << matches[0] << "\n";
emails = matches.suffix().str();
}
return 0;
}
分发:
aaa@gmail.ru adlf111
ed@ggg.er fgdfgd1gd141
对于字符串"awlefla aaa@gmail.ru adlf111 2 * ed@ggg.er fgdfgd1gd141"
(地址后的两个或更多空格)reg。表达式按预期工作。
试图研究注册。表达式,但我仍然看不出这里有什么问题。
请告诉我错误在哪里
visual studio IDE 2019
ISO C++14 标准
在 C++ 中转义斜杠是必要的,在正则表达式中转义一个点: