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' myFile
wird 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 *.log
listet 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.