C ++ Regex, unbekannte Escape-Sequenz '\.' Warnun

Zum ersten Mal habe ich versucht, reguläre Ausdrücke in C ++ zu verwenden, und ich bin ein wenig verwirrt über Escape-Sequenzen. Ich versuche einfach, einen Punkt am Anfang einer Zeichenfolge zu finden. Dafür benutze ich den Ausdruck: "^ \\\.", Der funktioniert, aber mein Compiler (g ++) erzeugt eine Warnung:

warning: unknown escape sequence '\.'
        regex self_regex("^\\\.");
                             ^~

Wenn ich beispielsweise "^ \\." Verwende, wird keine Warnung generiert, aber der reguläre Ausdruck stimmt nicht mit dem überein, was ich beabsichtige.

Ich verstehe auch nicht, warum ich drei Backslashes verwenden muss, sollten zwei nicht ausreichen, in "\". Der erste Backslash entgeht dem zweiten, so dass ich tatsächlich nach. suche, aber es funktioniert nicht. Kann das bitte jemand für mich klären?

Code

#include <iostream>
#include <dirent.h>
#include <regex>

using namespace std;

int main(void){
    DIR *dir;
    string path = "/Users/-----------/Documents/Bibliothek/MachineLearning/DeepLearning/ConvolutionalNeuralNetworks/CS231n 2016/Assignments/assignment3/assignment3/cs231n";
    regex self_regex("^\\\.+");
    struct dirent *ent;
    dir = opendir(path.c_str());
    if ((dir = opendir(path.c_str())) != NULL){
        while ((ent = readdir(dir)) != NULL){
            if (regex_search(string(ent->d_name),self_regex)){
                cout << "matches regex" << ent->d_name << endl;
            }
            else{
                cout << "does not match regex " << ent->d_name << endl;
            }
        }
        closedir(dir);
    }
    return 0;
}

Ausgabe

matches regex.
matches regex..
matches regex.DS_Store
matches regex.gitignore
does not match regex __init__.py
does not match regex __init__.pyc
does not match regex build
does not match regex captioning_solver.py
does not match regex captioning_solver.pyc
does not match regex classifiers
does not match regex coco_utils.py
does not match regex coco_utils.pyc
does not match regex data_utils.py
does not match regex datasets
does not match regex fast_layers.py
does not match regex fast_layers.pyc
does not match regex gradient_check.py
does not match regex gradient_check.pyc
does not match regex im2col.py
does not match regex im2col.pyc
does not match regex im2col_cython.c
does not match regex im2col_cython.pyx
does not match regex im2col_cython.so
does not match regex image_utils.py
does not match regex image_utils.pyc
does not match regex layer_utils.py
does not match regex layers.py
does not match regex layers.pyc
does not match regex optim.py
does not match regex optim.pyc
does not match regex rnn_layers.py
does not match regex rnn_layers.pyc
does not match regex setup.py

Antworten auf die Frage(4)

Ihre Antwort auf die Frage