Je voudrais par exemple extraire le contenu de la premi=E8re cellule.
Je fais des essais sur une simple cha=EEne avant d'attaquer le fichier:
gv@fantasio:~$ echo "<tr><td id=3D'ab'><i>machin</i></td><td
id=3D'cd'><i>truc</i></td></tr>" | sed "s,.*<td id=3D'ab'>\(.*\)</td>.*,
\1,g"
<i>machin</i></td><td id=3D'cd'><i>truc</i>
=C9videmment, je voudrais obtenir <i>machin</i>. La pr=E9sence de balises
<> dans les cellules m'emp=EAche d'utiliser [^>]*</td> pour d=E9finir le
contenu d'une seule cellule.
Je lis qu'on peut rendre lequantificateur + "paresseux" en ajoutant ?,
de mani=E8re =E0 ce qu'il s'arr=EAte apr=E8s la premi=E8re occurrence. Mais
gv@fantasio:~$ echo "<tr><td id=3D'ab'><i>machin</i></td><td
id=3D'cd'><i>truc</i></td></tr>" | sed "s,.*<td id=3D'ab'>\(.+?\)</td>.*,
\1,g"
renvoit toute la cha=EEne :(
<tr><td id=3D'ab'><i>machin</i></td><td id=3D'cd'><i>truc</i></td></tr>
et d'ailleurs l'usage d'un + sans ajouter ? m'est d=E9j=E0
incompr=E9hensible:
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jogo
Bonjour,
Si vous utilisez GNU sed, l'option --regexp-extended vous permettra d'utiliser toutes les possibilités des "expressions régulières étendues", comme les quantificateurs feignants. Sinon vous n'avez le droit qu'au BRE, où notamment les quantificateurs doivent être échappés.
Mais de toutes manières l'HTML est trop complexe pour être attaqué à coup d'expressions régulières. Il vaut mieux utiliser des programmes ou des bibliothéques spécialisées.
-- La passion est ordinairement scellée, on le sait, par la déclaration à l'autre : "Tu me manques". "Quoi me manque quand l'Autre me manque ?" - Freud -
Bonjour,
Si vous utilisez GNU sed, l'option --regexp-extended vous permettra
d'utiliser toutes les possibilités des "expressions régulières
étendues", comme les quantificateurs feignants. Sinon vous n'avez le
droit qu'au BRE, où notamment les quantificateurs doivent être échappés.
Mais de toutes manières l'HTML est trop complexe pour être attaqué à
coup d'expressions régulières. Il vaut mieux utiliser des programmes ou
des bibliothéques spécialisées.
--
La passion est ordinairement scellée, on le sait, par la déclaration
à l'autre : "Tu me manques". "Quoi me manque quand l'Autre me manque ?"
- Freud -
Si vous utilisez GNU sed, l'option --regexp-extended vous permettra d'utiliser toutes les possibilités des "expressions régulières étendues", comme les quantificateurs feignants. Sinon vous n'avez le droit qu'au BRE, où notamment les quantificateurs doivent être échappés.
Mais de toutes manières l'HTML est trop complexe pour être attaqué à coup d'expressions régulières. Il vaut mieux utiliser des programmes ou des bibliothéques spécialisées.
-- La passion est ordinairement scellée, on le sait, par la déclaration à l'autre : "Tu me manques". "Quoi me manque quand l'Autre me manque ?" - Freud -
Marc Boyer
Le 06-09-2009, gvdmoort a écrit :
Bonjour à tous,
Je voudrais me servir de sed pour extraire des chaînes de caractères d'un vaste tableau en html, et je ne m'en sors pas avec les quantificateurs.
En simplifiant, un fichier html contient tout un tableau en une seule ligne. Dans cette ligne, on a donc une succesion de
Je voudrais par exemple extraire le contenu de la première cellule.
Je fais des essais sur une simple chaîne avant d'attaquer le fichier:
:~$ echo "<tr><td id='ab'><i>machin</i></td><td id='cd'><i>truc</i></td></tr>" | sed "s,.*<td id='ab'>(.*)</td>.*, 1,g"
<i>machin</i></td><td id='cd'><i>truc</i>
Évidemment, je voudrais obtenir <i>machin</i>. La présence de balises <> dans les cellules m'empêche d'utiliser [^>]*</td> pour définir le contenu d'une seule cellule.
Tu peux toujours essayer de faire ça avec deux sed en séquence, le premier étant celui que tu as fait, le second coupant ce qui sort en trop. Après, comme l'a dit un autre contributeur, sed n'est pas forcément le meilleur outil pour extraire des infos du html.
Je voudrais par exemple extraire le contenu de la première cellule.
Je fais des essais sur une simple chaîne avant d'attaquer le fichier:
gv@fantasio:~$ echo "<tr><td id='ab'><i>machin</i></td><td
id='cd'><i>truc</i></td></tr>" | sed "s,.*<td id='ab'>(.*)</td>.*,
1,g"
<i>machin</i></td><td id='cd'><i>truc</i>
Évidemment, je voudrais obtenir <i>machin</i>. La présence de balises
<> dans les cellules m'empêche d'utiliser [^>]*</td> pour définir le
contenu d'une seule cellule.
Tu peux toujours essayer de faire ça avec deux sed en séquence,
le premier étant celui que tu as fait, le second coupant ce
qui sort en trop.
Après, comme l'a dit un autre contributeur, sed n'est pas
forcément le meilleur outil pour extraire des infos du html.
Marc Boyer
--
En prenant aux 10% des francais les plus riches 12% de leurs revenus,
on pourrait doubler les revenus des 10% les plus pauvres.
http://www.inegalites.fr/spip.php?article1&id_mot0
Je voudrais par exemple extraire le contenu de la première cellule.
Je fais des essais sur une simple chaîne avant d'attaquer le fichier:
:~$ echo "<tr><td id='ab'><i>machin</i></td><td id='cd'><i>truc</i></td></tr>" | sed "s,.*<td id='ab'>(.*)</td>.*, 1,g"
<i>machin</i></td><td id='cd'><i>truc</i>
Évidemment, je voudrais obtenir <i>machin</i>. La présence de balises <> dans les cellules m'empêche d'utiliser [^>]*</td> pour définir le contenu d'une seule cellule.
Tu peux toujours essayer de faire ça avec deux sed en séquence, le premier étant celui que tu as fait, le second coupant ce qui sort en trop. Après, comme l'a dit un autre contributeur, sed n'est pas forcément le meilleur outil pour extraire des infos du html.
Évidemment, je voudrais obtenir <i>machin</i>. La présence de balis es <> dans les cellules m'empêche d'utiliser [^>]*</td> pour définir l e contenu d'une seule cellule.
Bonjour,
travail par exclusion, tu supprime ce qui te gêne et tu traite ce qu'il reste :
Évidemment, je voudrais obtenir <i>machin</i>. La présence de balis es
<> dans les cellules m'empêche d'utiliser [^>]*</td> pour définir l e
contenu d'une seule cellule.
Bonjour,
travail par exclusion, tu supprime ce qui te gêne et tu traite ce qu'il
reste :
Évidemment, je voudrais obtenir <i>machin</i>. La présence de balis es <> dans les cellules m'empêche d'utiliser [^>]*</td> pour définir l e contenu d'une seule cellule.
Bonjour,
travail par exclusion, tu supprime ce qui te gêne et tu traite ce qu'il reste :