Bonjour,
Jerome Moinet a écrit :
fabrice régnier a écrit :
je cherche à parser la balise <A variables_de_la balise >blabla</A> et à
récupérer le contenu blabla.

echo "<A variables_de_la balise >blabla</A>" | sed s/"<[^>]*>"/""/g

Si il y a des espaces ou des tabulations devant :

echo "     <A variables_de_la balise >blabla</A>" | sed s/"<[^>]*>"/""/g
| sed s/"^[        ]*"/""/

AMHA, cette solution marche très bien pour du nettoyage de code (i.e. enlever toutes les balises). Le problème ici c'est qu'on peut avoir autre chose que la balise A sur la ligne, par exemple b : echo " <b>truc</b> <A variables_de_la balise >blabla</A>" | sed s/"<[^>]*>"/""/g| sed s/"^[ ]*"/""/
truc   blabla

or fabrice régnier semble ne vouloir que blabla.
La solution perl marche bien :

% cat blabla.html | \
perl -W -e 'while (<>){print "$2\n" if (/<a(.*?)>(.*)<\/a/oi);};'


on doit pouvoir faire la même chose à base de sed et de remplacements,
mais si l'on tient compte qu'il peut y avoir d'autres balises, d'autres A avant ou après et plusieurs balises <A, ça ne me parait pas évident.

echo " machin <b>truc</b> Ah ah ah ! <A variables_de_la balise >blabla</A> <A variables2>bidule</A> chouette" | sed -r s/"^.*<A[^>]*>([^<]*)<\/A>.*$"/"\1"/g
bidule

Ne donne que le contenu de la dernière balise A.

On doit pouvoir faire mieux en combinant avec grep par exemple :

echo " machin <b>truc</b> Ah ah ah ! <A variables_de_la balise >blabla</A> <A variables2>bidule</A> chouette" | grep -o -E "<A[^>]*>([^<]*)<\/A>" |sed -r s/"^.*<A[^>]*>([^<]*)<\/A>.*$"/"\1"/
blabla
bidule


@+
Yannick.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org

Répondre à