L'asterisco è solo un file operatore di ripetizione , ma devi dirgli cosa ripeti. /*abc*/
corrisponde a una stringa contenente ab e zero o più c (perché il secondo * è sulla c; il primo è privo di significato perché non c'è nulla da ripetere). Se vuoi abbinare qualcosa, devi dire .*
: il punto significa qualsiasi carattere ( entro determinate linee guida ). Se vuoi abbinare solo abc, potresti semplicemente dire grep 'abc' myFile
. Per la tua corrispondenza più complessa, devi usare .*
- grep 'abc.*def' myFile
abbinerà una stringa che contiene abc seguito da def con qualcosa in mezzo.
Aggiornamento in base a un commento:
*
in un'espressione regolare non è esattamente lo stesso di * nella console. Nella console, * fa parte di un costrutto glob e funge semplicemente da carattere jolly (ad esempio ls *.log
elencherà tutti i file che terminano con .log). Tuttavia, nelle espressioni regolari, * è un modificatore, il che significa che si applica solo al carattere o al gruppo che lo precede. Se si desidera che * nelle espressioni regolari agisca come un carattere jolly, è necessario utilizzare .*
come accennato in precedenza: il punto è un carattere jolly e la stella, quando si modifica il punto, significa trovare uno o più punti; cioè. trova uno o più caratteri.