exclure des sous chaines [RegExp] - Perl - Programmation
Marsh Posté le 30-01-2006 à 17:52:31
le mieux c'est souvent de faire plusieurs regexp dans ce cas. c'est plus simple et pas forcement beaucoup plus lent
Code :
|
mais sinon tu peux faire une belle grosse regexp si tu trouve ca plus clair (et que ca vaud le coup niveau vitesse)
Code :
|
vrai sauf si la chaine commence par //, ou ne contient que des caracteres autre que } ou est vide, ou fini par /
Marsh Posté le 30-01-2006 à 18:12:49
Citation :
|
j'y avais pensé à ca sauf que c'est pas bon car je ne cherche pas à savoir si la chaine se termine par */ mais seulement s'il n'y aurait pas un */ aprés un } (resp. un /* avant un {).
là je n'ai pas ce genre de notion tu vois c'est ca que je ne parviens pas à formaliser
en gros je compte les accolades ouvrantes et fermantes pour parser du c++ (je fais de l'ajout automatique de code à certains endroits précis) et je suis actuellement embêté par ce genre de cas :
} //commentaire
-> je zappe l'accolade à cause du /
n'est-il pas possible de formaliser "une chaine qui n'est pas */ répétée n fois ou 0" de la même facon que l'on peut écrire : [^a]* pour matcher une chaine ne contenant pas de a ?
Marsh Posté le 31-01-2006 à 00:03:10
deja c'est koi le * ?
tu cherche un * literal ?
si tu veux matcher des truc balancés genre parentheses alors je te conseil Text::Balanced
tu veux faire koi en fait?
Marsh Posté le 31-01-2006 à 10:36:28
je compte les accolades ouvrantes et fermantes dans du code c++ afin de me situer dans ce code (premiere accolade de méthode, derniere etc etc).
aussi je cherche à vérifier ce genre de truc :
Code :
|
-> accolade--
Code :
|
-> accolade--
Code :
|
-> accolade--
mais pas ce genre de cas :
Code :
|
-> pas accolade--
Code :
|
-> pas accolade--
tu vois ce que je veux dire ?
Marsh Posté le 31-01-2006 à 10:40:57
Je pense avoir trouvé, en fait ta solution était quasiement la bonne, il fallait juste ajouter les notions d'ordre
il doit y avoir plus simple et plus robuste surtout (je vais louper les "} /* blabla */ mais c'est pas grave) :
Code :
|
Merci beaucoup pour ton aide pospos
Marsh Posté le 30-01-2006 à 16:31:24
Bonjour à tous, avant de ne plus avoir un cheveux sur la tête je poste mon soucis ^^
j'essayer de valider ce genre de condition :
" $chaine ne commence pas par // contient } et ne se termine pas par */"
ca me donne un truc dans le genre :
evidement ca ne fonctionne pas car mes conditions entre crochet ne matchent pas des chaines mais des suites de caractères... oui mais voila la question justement
donc si je teste sur ces exemples :
seuls les 3 derniers sont bien identifiés, le 2 devrait l'être aussi (enfin avec la bonne expression bien sur )
help !