Regexp, perlsed, matcher plusieures lignes

Le
Gérald Niel
Bonjour,

En préambule, j'ai fait man perlre, man perlretut, me suis renseigné
sur un autre groupe, ai fait quelques recherche sur google sans
trouver la solution.

J'ai plusiseurs fichiers HTML à traiter (documentation LaTeX
transformé via HeVeA) que je nettois d'abord avec Tidy en vu
d'intégration dans un sites existant.

Je cherche à fair la chose suivante, et je n'y parvient pas, remplacer
depuis le prologue xml j'usqu'a <body> inclus par une chaine.
Je cheche la regexp qui me permette de matcher ça:

<?xml version="1.0" encoding="iso-8859-1"?>
[nombre de lignes indetrminées]
<body>

J'ai essayé ça:
perl -pe 's/^.*<body>Z/chaine/m' : ça ne fait rien
ou ça perl -pe 's/^s*<body>$/chaine/mg' : ça ne remplace que <body>
ou ça perl -pe 's/^[.*]*<body>$/chaine/m : idem, ne remplace que <body>

L'expression pourrait être 'depuis la première ligne jusqu'à <body>
inclus'. J'ai pas trouvé non plus comment faire.

On m'a indiqué une méthode qui fonctionne avec sed pour supprimer les
passages (pas les remplacer) mais je n'ai pas réussis à la transposer.

Avec perl, parce que j'adapte un script déjà existant. Avec lequel je
sais déjà chercher et remplacer certains passages, mais sur une seule
ligne avec des expressions simples.

@+
--
Lu sur linux.wine.users :
> I have a bottle of Haut Medoc from 1971 and wondered if anyone on this BB
> could advise as to possible value and drinkability.
-+- PB in Guide du linuxien pervers - "Important ça, la drinkability !" -+-
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JustMe
Le #455850
Gérald Niel wrote:

Bonjour,


Salut Gérald ;-)

En préambule, j'ai fait man perlre, man perlretut, me suis renseigné
sur un autre groupe, ai fait quelques recherche sur google sans
trouver la solution.


http://www.perlaccess.com/tutorials/4/4.3.html

peut te donner des idées ;-)

Gérald Niel
Le #455849
Le samedi 24 avril 2004 à 07:09 GMT, JustMe écrivait sur
fr.comp.os.unix :

Bonjour,


Salut Gérald ;-)


Je savais que tu trainais par là.

En préambule, j'ai fait man perlre, man perlretut, me suis renseigné
sur un autre groupe, ai fait quelques recherche sur google sans
trouver la solution.


http://www.perlaccess.com/tutorials/4/4.3.html

peut te donner des idées ;-)


Mouais... c'est toujours pas ce que je cherche, ça compliquerais de
beaucoup mon histoire.
Et là je sèche...
Ce n'est vraiment pas possible de prendre « n'importe quoi depuis le
début jusqu'à <body> » et le remplacer en une opération ?
Doit bien y avoir une regexp qui fait ça quand même !

@+
--
GA: pas assez convivial et surtout ce qui me gene le plus, c'est
GA: que linux c'est trop un systeme de droite.
HS: linux est en train d'etre récuperé politiquement par DL
-+- Hans in Guide du linuxien pervers : "ST serait il un virus ?" -+-


Benoit Izac
Le #455848
Bonjour,

le 24/04/2004 à 08:32, Gérald Niel a écrit
dans le message
En préambule, j'ai fait man perlre, man perlretut, me suis renseigné
sur un autre groupe, ai fait quelques recherche sur google sans
trouver la solution.


perldoc -q line
puis chercher « more than one line »

J'ai plusiseurs fichiers HTML à traiter (documentation LaTeX
transformé via HeVeA) que je nettois d'abord avec Tidy en vu
d'intégration dans un sites existant.

Je cherche à fair la chose suivante, et je n'y parvient pas, remplacer
depuis le prologue xml j'usqu'a <body> inclus par une chaine.
Je cheche la regexp qui me permette de matcher ça:

[nombre de lignes indetrminées]
<body>


#!/usr/bin/perl -w
use strict;

my $start = q{ my $end = q{<body>};
undef $/; # c'est ça qu'il te manque
my $data = <DATA>;
$data =~ s/Q$startE.*?$end/whatever/s;
print "$data";

__DATA__
une ligne avant
[nombre de lignes indetrminées]
une autre même
et encore !
<body>
une ligne après


--
Benoit Izac

nico
Le #455847
On Sat, 24 Apr 2004 06:32:05 +0000 (UTC)
Gérald Niel
Bonjour,

En préambule, j'ai fait man perlre, man perlretut, me suis
renseigné
sur un autre groupe, ai fait quelques recherche sur google
sans
trouver la solution.

J'ai plusiseurs fichiers HTML à traiter (documentation LaTeX
transformé via HeVeA) que je nettois d'abord avec Tidy en vu
d'intégration dans un sites existant.

[...]

Lu sur linux.wine.users :
I have a bottle of Haut Medoc from 1971 and wondered if
anyone on this BB
could advise as to possible value and drinkability.
-+- PB in Guide du linuxien pervers - "Important ça, la

drinkability !" -+-


j ai eu un truc de meme genre a faire. J ai procede de la
maniere suivante:
stocke dans un @tab mon fichier
je le parcour jusqu a ce que je trouve
ensuite je le modifie jusqu a ce que je trouve
<body>

ca donnait un truc dans ce genre la:

open(FD, ..);
@tab = <FD>;
for ($count = 0; exists($tab[$count]); $count++) {
if ($tab[$count] =~ <?xml
version="1.0"encoding="iso-8859-1"?>) {
for (; exist(...)&& !($tab[$count =~ "<body>") {
....
}
}
}

bon c est clairement pas une regex qui donne un resultat
equivalent qq soit le fichier.

--
Nicolas Cormier
E-mail :


Stephane Chazelas
Le #455663
2004-04-24, 06:32(+00), Gérald Niel:
[...]
Je cherche à fair la chose suivante, et je n'y parvient pas, remplacer
depuis le prologue xml j'usqu'a <body> inclus par une chaine.
Je cheche la regexp qui me permette de matcher ça:

[nombre de lignes indetrminées]
<body>


perl -0777 -pe 's/
--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]

Gérald Niel
Le #455225
Le samedi 24 avril 2004 à 08:05 GMT, Benoit Izac écrivait sur
fr.comp.os.unix :

undef $/; # c'est ça qu'il te manque


Non, il était présent dans le script que j'adapte, mais je m'y prenais
mal.
Là ça fonctionne comme attendu. Merci.



Je n'y avais pas pensé...

@+
--
je voudrais pirater la fac ou je suis qui est sur réseau sur linux!
Aidez moi SVP
echo "C'est quoi le mot de passe?" | mail root

-+- AGV in Guide du linuxien pervers - "Faut savoir rendre service." -+-

Publicité
Poster une réponse
Anonyme