Quelqu'un me dit que j'ai besoin d'échapper à un point-virgule dans une expression régulière Perl. C'est-à-dire, pour correspondre à une ligne contenant un point-virgule, je devrais utiliser D'après ce que j'ai lu, le point-virgule n'a aucune signification particulière dans une expression régulière littéral, alors l'échappatoire semble inutile. J'ai fait des expériences et y a-t-il une raison pour laquelle / \; / code> et non
/; / code>. P>.
/; / code> semble fonctionner correctement. Avec des avertissements allumés et que le
utilise strict; code> pragma en vigueur,
perl code> ne se plaint pas. P>
/ \; / code> est meilleur que
/; / code>? Est-ce que cette version dépend de la version? P>
6 Réponses :
Il n'est pas nécessaire de l'échapper. p>
Il n'y a absolument pas besoin d'échapper à un point-virgule dans un modèle d'expression régulier. Il n'y a pas eu un tel besoin depuis près de dix ans que j'ai utilisé Perl et je doute qu'il y ait jamais été. P>
Un résumé concis de caractères spéciaux et de séquences d'échappement peut être trouvé dans perdoc perlreref code>
. p>
non. /; / code> devrait toujours fonctionner simplement bien. p>
Peut-être que c'est une habitude développée à partir d'utiliser Perl One-Linders sur la ligne de commande et de ne pas citer, donc le '; diviser le reste dans une autre commande? Quoi qu'il en soit, comme tout le monde dit, pas besoin. P>
@Jefromi hmmmm ... ça sonne comme une bonne supposition. J'ai été perdu quant à la raison pour laquelle quelqu'un penserait qu'il y avait un tel besoin.
Peut-être que quelqu'un pense que le point-virgule a besoin de s'échapper parce que la mise en évidence de la syntaxe de leur éditeur est confondue par le point-virgule intégré. Dans mon expérience, la plupart des éditeurs ont beaucoup de difficulté à faire face à la syntaxe de Perl. N'oubliez pas que Seul Perl peut analyser Perl . P>
WOW, PPI a l'air génial. Et c'est un excellent exemple de documentation bien écrite, notamment une bonne description de la raison pour laquelle il est si difficile d'analyser Perl.
Yep, le point-virgule n'est pas un personnage méta, alors je suppose que cela n'a pas besoin d'être échappé. P>
@sinan parce que je n'ai pas vérifié avant de répondre :)