J'ai l'explication : il insistait juste sur le fait que * peut valoir 0. Il dit à ce moment-là que la contrainte devient muette ... no comment. Jeremy On 10/25/05, Jeremy Monnet <jmonnet@gmail.com> wrote:
Merci pour vos reponses ! Je vais pouvoir demander ce qu'il voulait dire, car je pense que son exemple n'est pas flagrant. On peut toujours compliquer les choses par plaisir, mais la son expression matche tout, donc pourquoi ne pas utiliser .* directement ? Je ne sais pas ce qu'il veut ... En attendant d'en savoir plus, je reste sur le "bug" de regexp (c'est a dire un probleme d'interface fauteuil/clavier ;-) )
Jeremy
On 10/25/05, Vincent Lefevre <vincent@vinc17.org> wrote:
On 2005-10-24 18:05:43 +0200, Jeremy Monnet wrote:
En bref, dans le poly de cours, il est marque : " Soit la regexp ^[^abc]*
Soit un fichier contenant : ascenseur chameau berceau elephant
la regexp selectionne toutes les lignes, a cause du principe de rendre muette une contrainte pour satisfaire la regexp globalement "
J'ai cherche un peu pour trouver que finalement une regexp faisant ce qu'on lui demande (enfin ce que je crois etre le but de cette regexp : ne trouver que elephant) serait ^[^abc][a-z]* Mon impression est donc plutot que l'utilisation de l'etoile est mauvaise (mal placee)
En fait, il y a généralement deux contextes possibles, suivant les applications: 1) soit une regexp doit matcher toute une ligne (ou toute une chaîne), 2) soit elle peut matcher une partie de la ligne (ou chaîne) seulement. En général, on est dans le cas 2, et on utilise ^ et/ou $ pour matcher le début et/ou fin de la ligne. Mais alors, teminer sa regexp par une sous-expression étoilée ne sert à rien (sauf lors d'un remplacement).
La question est donc : quel est ce principe de "rendre muette une contrainte pour satisfaire une regexp" ? Est-ce justifie dans ce contexte (ou ce que j'en ai compris) ?
Je pense qu'il veut dire que la regexp matche la sous-chaîne vide située au début de chaque ligne. Par conséquent, toutes les lignes sont sélectionnées. Il s'agit généralement d'un bug dans la regexp (sauf en cas de remplacement, e.g. s/^[^abc]*/x/ puisqu'en général, * est glouton, ou bien en cas de colorisation, par exemple avec "grep --color").
-- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / SPACES project at LORIA _______________________________________________ Shell mailing list Shell@lists.asyd.net http://lists.asyd.net/mailman/listinfo.cgi/shell