L'astérisque n'est qu'un opérateur de répétition , mais vous devez lui dire ce que vous répétez. /*abc*/
correspond à une chaîne contenant ab et zéro ou plus de c (parce que le deuxième * est sur le c; le premier n'a pas de sens parce qu'il n'y a rien à répéter). Si vous voulez faire correspondre quelque chose, vous devez dire .*
- le point signifie n'importe quel caractère ( selon certaines directives ). Si vous voulez simplement faire correspondre abc, vous pouvez simplement dire grep 'abc' myFile
. Pour votre correspondance plus complexe, vous devez utiliser .*
- grep 'abc.*def' myFile
correspondra à une chaîne contenant abc suivie de def avec quelque chose éventuellement entre les deux.
Mise à jour basée sur un commentaire:
*
dans une expression régulière n'est pas exactement la même chose que * dans la console. Dans la console, * fait partie d'une construction glob , et agit simplement comme un joker (par exemple ls *.log
, listera tous les fichiers qui se terminent par .log). Cependant, dans les expressions régulières, * est un modificateur, ce qui signifie qu'il s'applique uniquement au caractère ou au groupe qui le précède. Si vous voulez que * dans les expressions régulières agisse comme un caractère générique, vous devez utiliser .*
comme mentionné précédemment - le point est un caractère générique, et l'étoile, lors de la modification du point, signifie trouver un ou plusieurs points; c'est à dire. trouver un ou plusieurs de n'importe quel caractère.