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.to

    Das Ergbnis ist:

    abc@gmail.com xxx
    test@yahoo.com xxx
    a@a.to

    Das 'xxx' sollten aber nicht mit ausgegeben werden!?


  • Mod

    "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"
    


  • Deshalb gibt es Rawstringliterale.


Log in to reply