Au risque de poser une bête question, l’expression « .+* » a-t-elle du sens ? Je veux dire, il me semble que « .+ » signifie une suite d’au moins un caractère. Donc, à quoi s’applique l’astérisque ? À cette suite d’un nombre indéterminé de caractères ? Cela m’a l’air louche.
De plus, si l’on écarte l’astérisque, l’expression « <.+> » va correspondre à la plus longue suite de caractères comprise entre le caractère « < » et le caractère « > », ce qui n’est pas ce que tu veux, me semble-t-il.
[quote=« Taurre »]
Au risque de poser une bête question, l’expression « .+* » a-t-elle du sens [/quote]
Salut,
Non. Mais elle n’est pas censé mettre mon PC en carafe - le ‹ * › a été tapé par inadvertance. Perl fait comme si de rien n’était, ce qui me semble un comportement sain.
C’est justement là question : est ce que l’on peut considérer comme un bug ou comme une erreur de celui qui a fait le script ? A mon avis les deux, mais une simple expression rationnelle mal tapée ne devrait pas mener à ça. C’est pour ça que je lançerais bien un bug sur le BTS Debian mais je voulais avoir d’autres avis…
Au pire balancer un message d’erreur en indiquant que c’est stupide, au mieux ignorer ‹ * › comme le fait Perl
Hmm… Venant du C, j’aurais tendance à considérer qu’il s’agit d’un comportement indéterminé et que, par conséquent, un peu près tout peut arriver. Cependant, je viens de jeter un œil à la norme POSIX et il semble en effet que ce soit un comportement contraire à cette dernière.
This section uses the term « invalid » for certain constructs or conditions. Invalid REs shall cause the utility or function using the RE to generate an error condition. When invalid is not used, violations of the specified syntax or semantics for REs produce undefined results: this may entail an error, enabling an extended syntax for that RE, or using the construct in error as literal characters to be matched. For example, the BRE construct « {1,2,3} » does not comply with the grammar. A conforming application cannot rely on it producing an error nor matching the literal characters « {1,2,3} ».[/quote]
A priori, dans le cas d’une expression non qualifiée d’invalide, il n’y a que trois comportement possible : renvoyé une erreur, effectuer la recherche s’il s’agit d’une expression régulière « étendue » ou effectuer la recherche en considérant l’expression régulière comme du texte. Toutefois, j’ai un doute sur le caractère exhaustif ou illustratif de la liste.
@Taurre > De manière général (POSIX ou pas) un comportement indéterminé ne doit pas aboutir à la consommation de toutes les ressources de ta machine. Sauf si ce que tu demande le nécessite.