Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Regexp, perlsed, matcher plusieures lignes

6 réponses
Avatar
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/^.\n*<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/^[.*\n]*<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 !" -+-

6 réponses

Avatar
JustMe
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 ;-)

Avatar
Gérald Niel
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 ?" -+-


Avatar
Benoit Izac
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:

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


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

my $start = q{<?xml version="1.0" encoding="iso-8859-1"?>};
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
<?xml version="1.0" encoding="iso-8859-1"?>
[nombre de lignes indetrminées]
une autre même
et encore !
<body>
une ligne après


<news:fr.comp.lang.perl> pour plus d'info.
--
Benoit Izac

Avatar
nico
On Sat, 24 Apr 2004 06:32:05 +0000 (UTC)
Gérald Niel wrote:

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
<?xml version="1.0"encoding="iso-8859-1"?>
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 :


Avatar
Stephane Chazelas
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:

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


perl -0777 -pe 's/<?xml ...>.*?<body>/chaine/s'

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]

Avatar
Gérald Niel
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.

<news:fr.comp.lang.perl> pour plus d'info.


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." -+-