Comment puis-je bande multiligne C commentaires à partir d'un fichier à l'aide de Perl?
Quelqu'un peut-il me faire avec l'expression régulière de la bande de commentaire sur plusieurs lignes et commentaires d'une ligne dans un fichier?
par exemple:
" WHOLE "/*...*/" HAS TO BE STRIPED OFF....."
1. /* comment */
2. /* comment1 */ code /* comment2 */ #both /*comment1*/and /*comment2*/
#has to striped off and rest should
#remain.
3. /*.........
.........
.........
......... */
j'ai vraiment apprécier vous si u ce besoin.... merci à l'avance.
- En règle générale, j'ai trouvé que quand vous essayez de les manipuler par programmation un langage comme C, XML, SQL, etc. vous devriez vraiment penser à un analyseur de ne pas regexs. Je recommande fortement d'apprentissage sur un analyseur de générateurs, yacc, javacc, etc. Il avait d'énormes profits pour moi en tant que développeur de logiciels.
Vous devez vous connecter pour publier un commentaire.
Y compris des tests:
De perlfaq6 "Comment puis-je utiliser une expression régulière pour dépouiller les commentaires de style C à partir d'un fichier?":
Tout cela peut être fait, il est beaucoup plus difficile que vous ne le pensez. Par exemple, ce one-liner
permettra de travailler dans de nombreux cas mais pas tous. Vous voyez, c'est trop simple d'esprit pour certains types de programmes en C, en particulier, ceux avec ce qui semble être des commentaires dans les chaînes entre guillemets. Pour cela, vous auriez besoin de quelque chose de ce genre, créé par Jeffrey Friedl et modifié plus tard par Fred Curtis.
Cela pourrait, bien sûr, être plus lisiblement écrit avec le /x modificateur, l'ajout d'espaces et commentaires. Ici, il est élargi, avec l'aimable autorisation de Fred Curtis.
Une légère modification supprime également C++ commentaires, éventuellement sur plusieurs lignes à l'aide d'un caractère de continuation:
Comme souvent en Perl, vous pouvez atteindre le CPAN: Regexp::Common::Commentaires devrait vous aider. La seule langue que j'ai trouvé qui utilise les commentaires que vous avez décrit, c'est Nickel, mais peut-être que PHP commentaires serait OK (//pouvez également démarrer un commentaire sur une seule ligne).
Noter que dans tous les cas, en utilisant les expressions régulières pour extraire commentaire est dangereux, un analyseur syntaxique pour le langage est beaucoup moins risqué. Une regexp-analyseur, par exemple, est susceptible de se confondre par quelque chose comme
print "/*";
.C'est une FAQ:
Trouvé dans perlfaq6:
Il est également un non-perl réponse: utiliser le programme stripcmt:
Supprimer /* */commentaires (y compris les multi-ligne)
Je poste ce parce qu'il est simple, mais je crois qu'il va trébucher sur des commentaires comme
Mais comme ils sont assez rares, je préfère le simple regex.