Regex funktioniert nicht richtig
-
Ich habe ein input file das in einen string geladen wird. In diesem string sollen dann mit einem Regex matches gesucht werden.
Hier meine implementierung:void readFile(fs::path filename) { ifstream in(filename.string(), ios::in | ios::binary); if (in) { string content; in.seekg(0, ios::end); content.resize(in.tellg()); in.seekg(0, ios::beg); in.read(&content[0], content.size()); in.close(); searchContent(content); } } void searchContent(string content) { smatch match; regex expr("\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}"); while (regex_search(content, match, expr)) { for (auto x : match) cout << x << " "; cout << std::endl; content = match.suffix().str(); } }
Das Testfile hat folgende Eintraege:
abc@gmail.com xxx
xxx xx test@yahoo.com xxx
sss a@a.toDas Ergbnis ist:
abc@gmail.com xxx
test@yahoo.com xxx
a@a.toDas 'xxx' sollten aber nicht mit ausgegeben werden!?
-
"\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"
-
Deshalb gibt es Rawstringliterale.