gros problème avec les expressions regulières [PERL] - Perl - Programmation
Marsh Posté le 30-05-2003 à 20:04:19
La solution à ton problème c'est la "zero-width negative lookahead assertion":
(?!...)
Marsh Posté le 31-05-2003 à 01:07:04
juste une chose, vu que tu récupères tout dans ta chaine, pourquoi tu ne fais pas un split?? bcp plus efficace et simple à utiliser ensuite
Marsh Posté le 01-06-2003 à 01:07:23
Je ne demande qu'a utiliser des techiques qui marchent...
merci
c quoi un split ????
c quoi la "zero-width negative lookahead assertion" ?
rassurez-vous je cherche de mon côte aussi !
en fait, le truc que je fait, c'est un peu comme traiter des balises XML.... je trouve ma balise de debut... et j'attend ma balise de fin correspondante avant d'arreter la recherche....
car j'ai besoin de placer un marqueur dans la balise de debut et de fin....
remarquez, je pourrais ne placer un marqueur que dans celle de debut..... j'y reflechi......
enfin, là je peux resoudre le PB autrement, mais dans d'autres cas de figure, je ne peux pas ...
exemple :
<Balise1> blabla </Balise1> <Balise2> blabla </Balise2> <Balise3> blabla </Balise3>
et chaque blabla peut varier, mais moi, c'est juste les balises qui m'interressent ! comment faire... (attention, j'ai mis du XML, mais dans ma structure ca n'en est pas !
http://www.comtech-pcs.com/regexp.html
Marsh Posté le 01-06-2003 à 11:50:48
Nounours, tu peux nous filer un exemple concrès de ce que tu traite comme données ???
J'ai déjà bossé des scripts Perl qui récupéraient le contenu de deux balises (HTML, XML) et ça marchait très bien
Mais là, j'ai besoin d'avoir un visuel sur ce que tu dois traiter comme datas
Marsh Posté le 30-05-2003 à 17:41:24
Quand j'ai quelque chose à matcher comme ca (c'est simplifié) :
(truc\s+)((\S+\s+)*)(truc\s+)
<-- +/- -->
et bien souvent, il refuse de trouver la fin de ce genre de chaine !
c'est le * qui merde, il faudrait pourvoir dire, \S+ sauf truc (autrement dir : ni \s ni "truc" )...comment faire ????
Car le probleme c'est que lorsqu'on fait un [^ ], on ne peut pas mettre de chaine de caractere, mais juste 1 caractère !!!!