IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

RegEx pour ignorer commentaires JSP [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 21
    Par défaut RegEx pour ignorer commentaires JSP
    Bonjour,

    Je cherche à repérer les erreurs typographiques dans une grosse application (700 jsp) et j'aimerais pouvoir dénombrer correctement le nombre d’occurrences de certains caractères. Je travaille avec Eclipse, donc j'utilise son outil de recherche avec son option Regex.

    Par exemple, je voudrais savoir combien de caractères ":" ne sont pas précédés de  .
    Pour cela je recherche "\s:\s", mais bien évidemment, Eclipse me renvoie toutes les occurrences se situant dans les commentaires (+2200 occurrences en tout)

    Ma question est donc:
    Comment faire pour trouver certains caractères ne se situant pas dans les commentaires jsp (commençant par <!-- ou <%--) ?

    J'ai bien essayé des choses comme "^(?!<!--).+\s:\s" sans grand succès.
    Je ne comprends pas les notions de look-ahead et look-behind et je ne maitrise pas encore le positionnement des opérateurs et leur portée (l'opérateur ? agit sur quel éléments).

    J'ai pas mal écumé les différentes explications sur les regexp, mais je ne suis pas tombé sur des explications assez pédagogiques. Globalement les documents se contentent de recenser les opérateurs et les définissent avec des termes qui sous-entendent qu'on a déjà compris certains concepts.

    Quelqu'un saurait-il m'éclairer ?

    Merci par avance pour votre aide.

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Bonjour,

    le problème avec Eclipse (moi, j'utilise aptana, je suppose que c'est pareil) c'est que tu ne peux pas utiliser de fonction callback (ie: une fonction qui te permet d'agir sur la pattern de remplacement, une fois les correspondances trouvées).

    Dans pareil situation, moi, j'utiliserai le PHP en chargeant le fichier en question dans une chaine. Puis après je lui appliquerai ceci:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $str = <<<LOD
    <!-- histoire : le chat-vampire -->
    Alors, le chat me sauta à la gorge et dit : je vais te mordre à la jugulaire, chenapan! <!-- le chat n est jamais grossier
    et utilise toujours des mots comme : chenapan, paltoquet...-->
    Mais il n avait prêté garde à la naissance de l aube, et son pelage commençait à roussir présageant une combustion prochaine.
    Je lui rétorquai : Tel est pris qui croyait prendre!   
    LOD;
    $pattern = "/(<(?:!|%)--.*?-->)|( : )/s";
    echo '<pre>';
    echo preg_replace_callback ( $pattern, create_function( '$matches', 'return ( empty( $matches[1] ) ) ? "&nbsp: " : $matches[1];' ), $str );
    echo '</pre>';
    En gros, si on rencontre un commentaire, on renvoi le commentaire, si on trouve " : ", on renvoi "&nbsp;: ", un point c'est topz.

    Autre possibilité: si dans eclipse tu arrives à matcher uniquement les " : " situés dans des commentaires, il te suffit de les remplacer par "choukroute garnye" par exemple, puis de remplacer tous les " : " qui restent par "&nbsp;: ", puis tous les "choukroute garnye" par " : ".
    Encore faut-il arriver à matcher tous les " : " situés dans les commentaires avec eclipse, ce qui ne m'a pas l'air simple!

    Bon courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 21
    Par défaut
    Bonjour CosmoKnacki,

    Eh bien je te remercie pour cette réponse.
    La première solution est compliquée à mettre en place, mais la seconde est très simple en fait.
    Dans eclipse pour trouver tous les ":" dans les commentaires jsp il suffit de faire un search sur cette expression "(<%--.*) : (.*-->)".
    On remplace alors ceci par $1huitrebaveuse$2 (j'ai vérifié, on ne parle pas d'huitrebaveuse dans cette appli), puis quand on a remplacé toutes les occurences de ":" dans le reste on fait l'inverse. C'est simple, sur, rapide, et je vais pouvoir faire de même pour tous les autres caractères ( !, ? ,; ,%)

    Merci beaucoup pour cette solution!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL Server] Quel type de champ pour du commentaire
    Par brmartin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/07/2006, 12h51
  2. WTP : probleme pour editer des JSP
    Par felix79 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/06/2006, 16h14
  3. [ JSP ] <include-coda> pour chaque page jsp
    Par Invité dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 10/02/2006, 16h08
  4. [Plugins] Quel plugins pour XML et JSP sous Eclipse 3.1
    Par sp4ever dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 11/10/2005, 15h03
  5. [débutant]ou mettre un fichier java pour une appli jsp?
    Par zozolh2 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/05/2004, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo