Das Sternchen ist nur ein Wiederholungsoperator , aber Sie müssen ihm mitteilen, was Sie wiederholen. /*abc*/Entspricht einer Zeichenfolge, die ab und null oder mehr c enthält (weil das zweite * auf dem c steht; das erste ist bedeutungslos, weil es nichts zu wiederholen gibt). Wenn Sie etwas übereinstimmen möchten, müssen Sie sagen .*- der Punkt bedeutet ein beliebiges Zeichen ( innerhalb bestimmter Richtlinien ). Wenn Sie nur mit abc übereinstimmen möchten, können Sie einfach sagen grep 'abc' myFile. Für Ihre komplexere Übereinstimmung müssen Sie verwenden .*- grep 'abc.*def' myFilewird eine Zeichenfolge abgleichen, die abc gefolgt von def mit etwas optional dazwischen enthält.
Update basierend auf einem Kommentar:
*in einem regulären Ausdruck ist nicht genau das gleiche wie * in der Konsole. In der Konsole ist * Teil eines Glob-Konstrukts und fungiert lediglich als Platzhalter ( ls *.loglistet beispielsweise alle Dateien auf, die mit .log enden). In regulären Ausdrücken ist * jedoch ein Modifikator, was bedeutet, dass er nur für das Zeichen oder die Gruppe davor gilt. Wenn Sie möchten, dass * in regulären Ausdrücken als Platzhalter fungiert, müssen Sie .*wie zuvor erwähnt verwenden - der Punkt ist ein Platzhalterzeichen, und der Stern bedeutet beim Ändern des Punkts, einen oder mehrere Punkte zu finden. dh. Finde einen oder mehrere Charaktere.