2010-10-14 9 views
0

Je ne veux pas apprendre les expressions rationnelles seulement pour ce problème particulier. J'ai besoin de trouver des commentaires '/ * N * /' dans les fichiers C++. Quelqu'un peut-il écrire une expression rationnelle qui trouve de tels commentaires?comment trouver '/ * N * /' en utilisant regexp

+0

Vous ne voulez ou ne voulez pas RegExp? – kennytm

+0

ne veulent pas apprendre :) désolé pour cette erreur –

+0

Êtes-vous littéralement à la recherche de N, ou N est le texte du commentaire? – onaclov2000

Répondre

2

Essayez cette regex:

/\/\*(.*?)\*\// 

Voilà comment cela fonctionne:

\/ <- The/character (escaped because I used/as a delimiter) 
\* <- The * character (escaped because it's a special character) 
( <- Start of a group 
    .  <- Any character 
    *  <- Repeated but not mandatory 
    ?  <- Lazy matching 
)  <- End of the group 
\* <- The * character 
\/ <- The/character 

Edit: Il n » t gérer \n ni \r\n, si vous voulez alors considérer @Alex answer avec le drapeau m.

+0

+1 (bien que je considérais downvoting: L'OP ne veut pas apprendre Regexps :-P) – Boldewyn

+0

Je n'ai pas dit que je ne veux pas d'explication: D –

0

Que diriez-vous: (. *?). (? < = \/*) (? = * \ /)

qui utilise assertions arrières et lookaheads et capture le texte du commentaire (supprimer sinon les parens autour du * , ne pas capturer). Assurez-vous d'utiliser une recherche sur plusieurs lignes, parce que ce sont plusieurs lignes commentaires

2

Qu'en est-

/\/\*(.+?)\*\//m 

$1 seront vos commentaires.

Heureusement, le modificateur de modèle m fera correspondre la période (match all) à de nouvelles lignes (\n).

Notez que le + signifie qu'il ne fera correspondre que les commentaires avec au moins un caractère - puisqu'il semble que vous voulez connaître les commentaires eux-mêmes, c'est OK (quelle utilisation aura 0 commentaire de longueur)?

Cependant, si vous voulez connaître le nombre total de blocs de commentaires, remplacez + (1 ou plus) par * (0 ou plus).

Aussi, pourquoi ne pas essayer regex? C'est difficile au début car la syntaxe est amusante, mais ils sont vraiment puissants.

+0

+1 pour le modificateur m – Boldewyn