OVH Cloud OVH Cloud

Aide regex

6 réponses
Avatar
Francois Cerbelle
--/04w6evG8XlLl3ft
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Bonjour la liste,

Je suis en train de faire la traduction d'un livre O'Reilly et le
source a traduire vient de FrameMaker. Le texte est traduit, mais il
me reste les entr=E9es d'index. Pour minimiser le travail et les risques
d'erreurs, ainsi que pour essayer d'avoir toujours les memes termes,
j'aimerais extraire les entrees d'index dans un fichier de commande
sed pour faire les remplacements intelligents.

Je dispose d'un texte qui ressemnble =E0 =E7a :
----------------------------------------------------------------
Texte {_Index blabla:we _} bla {_Index {_StartRange_} bla _} bla
vla
truc
bidule {_Index {_EndRange_} bla _}
----------------------------------------------------------------
J'aimerais en sortir =E7a :
{_Index blabla:we _}
{_Index {_StartRange_} bla _}
{_Index {_EndRange_} bla _}

ou meme, encore mieux :
blabla:we
bla
bla

ou encore encore mieux :
%s/blabla:we//g
%s/bla//g
%s/bla//g

Ainsi, je retire les chaines a ne pas traduire et les doublons,
j'insere les traductions entre les // et je balance ca a sed.

J'en bave grave, mais ca vaut le coup, =E9tant donn=E9 le nombre
d'occurences de ces salet=E9s et le nombre de lignes.

Y'a-t-il un expert es regex dans la liste ?

Merci d'avance

Fanfan

PS: si quelqu'un me propose un programme perl, je suis preneur aussi.
Peut importe le moyen, pourvu que j'obtienne un fichier dans le format
=E9nonc=E9.
--=20
L'amour rend aveugle. L'amour doit rendre aveugle ! Il a sa propre
lumi=E8re. Eblouissante. =20
[Daniel Pennac]

--/04w6evG8XlLl3ft
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBuZnIn0FdfiSfsswRAgt+AKCJiLiSQHX3M/rr88T7T01F3xD56gCbBGug
taes67wpzqWs9B9rt/3VUxg=
=4kiS
-----END PGP SIGNATURE-----

--/04w6evG8XlLl3ft--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

6 réponses

Avatar
Yves Rutschle
On Fri, Dec 10, 2004 at 01:42:48PM +0100, Francois Cerbelle wrote:


Une migraine va m'empêcher de regarder les expressions
rationelles qu'il faut, mais:

Je dispose d'un texte qui ressemnble à ça :
----------------------------------------------------------------
Texte {_Index blabla:we _} bla {_Index {_StartRange_} bla _} bla
vla
truc
bidule {_Index {_EndRange_} bla _}
----------------------------------------------------------------


[...]

ou encore encore mieux :
%s/blabla:we//g
%s/bla//g
%s/bla//g

Ainsi, je retire les chaines a ne pas traduire et les doublons,
j'insere les traductions entre les // et je balance ca a sed.



Je t'arrète tout de suite: Si tu appliques même simplement
ce que tu as montré là, en traduisant "bla" par "bidule",
ton fichier de départ va devenir:

Texte {_Index blabla:we _} bidule {_Index {_StartRange_} bidule _} bidule
vla
truc
bidule {_Index {_EndRange_} bidule _}

En d'autre terme, tu changes non seulement les entrées
d'index, mais aussi tout le reste du texte, ce qui n'est
sans doute pas ce que tu veux faire.

AMHA il te faut un outils du genre po4a, avec un parseur
correct (j'imagine aussi que les entrées d'index peuvent
être coupées sur deux lignes:

Texte {_Index blabla:we
_} bla {_Index {_StartRange_} bla _} bla

Ce qu'il faut aussi prendre en compte.

Y.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Francois Cerbelle
--rJwd6BRFiFCcLxzm
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Le Fri, Dec 10, 2004 at 02:11:32PM +0000, Yves Rutschle ecrit :
Une migraine va m'empêcher de regarder les expressions
rationelles qu'il faut, mais:



[...]

Je t'arrète tout de suite: Si tu appliques même simplement
ce que tu as montré là, en traduisant "bla" par "bidule",
ton fichier de départ va devenir:

Texte {_Index blabla:we _} bidule {_Index {_StartRange_} bidule _} bidule
vla
truc
bidule {_Index {_EndRange_} bidule _}

En d'autre terme, tu changes non seulement les entrées
d'index, mais aussi tout le reste du texte, ce qui n'est
sans doute pas ce que tu veux faire.



Tout le texte est deja traduit, et les chaines à traduire (les entrees
d'index) sont suffisemment longues et en anglais pour ne pas etre dans
le texte. ;-) D'autre part, si je peux construire un fichier :
s/{_Index blabla:we _}/{_Index bidule:we _}/

Ce sera une securite de plus, mais elle n'est pas indispensable, etant
donne mon texte.

AMHA il te faut un outils du genre po4a, avec un parseur correct
(j'imagine aussi que les entrées d'index peuvent être coupées sur
deux lignes:
Texte {_Index blabla:we
_} bla {_Index {_StartRange_} bla _} bla
Ce qu'il faut aussi prendre en compte.



C'est deja fait, j'ai fait passer une macro vim pour reassembler les
lignes. Le travail est vraiment pre-maché ! ;-) Il ne me manque plus
que cette saleté de regex ! ;-)

Fanfan
--
Il faut que tu crois encore plus ce que tu crois, et quand tu
commences à croire ce que tu crois, y a personne au monde qui peut te
bouger !
[J.C. VanDamme]

--rJwd6BRFiFCcLxzm
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBubOvn0FdfiSfsswRAgVtAJ4q6vcribr0jf9jd86uBV0hwtaTuACgyChR
07btPwvTA/FzMeW3KX887IM =Diaj
-----END PGP SIGNATURE-----

--rJwd6BRFiFCcLxzm--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
On Fri, Dec 10, 2004 at 03:33:19PM +0100, Francois Cerbelle wrote:
Tout le texte est deja traduit, et les chaines à traduire (les entrees
d'index) sont suffisemment longues et en anglais pour ne pas etre dans
le texte. ;-) D'autre part, si je peux construire un fichier :
s/{_Index blabla:we _}/{_Index bidule:we _}/

Ce sera une securite de plus, mais elle n'est pas indispensable, etant
donne mon texte.



Bon ok.

C'est deja fait, j'ai fait passer une macro vim pour reassembler les
lignes. Le travail est vraiment pre-maché ! ;-) Il ne me manque plus
que cette saleté de regex ! ;-)



Rien que d'ouvrir le man de sed m'a fait encore plus mal à
la tête, alors, en Perl:

#! /usr/bin/perl

while (<>) {
next unless /{_Index/;

s/{_Indexs*({w+})?s*(.*?)s*_}//;

$set{$2}=1;

redo;
}

foreach $i (sort keys %set) {
print "%s/$i//gn";
}


(Ça retire aussi les doublons et classe par ordre alphabétique, tant qu'on y est. Si ça n'est pas voulu, on peut simplfier:

#! /usr/bin/perl

while (<>) {
next unless /{_Index/;

s/{_Indexs*({w+})?s*(.*?)s*_}//;
print "%s/$2//gn";
redo;
}


Voilà... ça marche pour ton échantillon gratuit.

Dois-je conclure que FrameMaker sauvegarde en format texte?

Y.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Francois Cerbelle
--OXfL5xGRrasGEqWY
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Le Fri, Dec 10, 2004 at 02:59:48PM +0000, Yves Rutschle ecrit :
> C'est deja fait, j'ai fait passer une macro vim pour reassembler les
> lignes. Le travail est vraiment pre-maché ! ;-) Il ne me manque plus
> que cette saleté de regex ! ;-)

Rien que d'ouvrir le man de sed m'a fait encore plus mal à
la tête, alors, en Perl:


[...]
(Ça retire aussi les doublons et classe par ordre alphabétique, tant
qu'on y est. Si ça n'est pas voulu, on peut simplfier:


[...]
Dois-je conclure que FrameMaker sauvegarde en format texte?



Tu es un dieu, tu es un amour... Si j'étais une femme, je te
demanderais en mariage ! Merci infiniment, ça fait exactement pil-poil
ce dont j'avais besoin.

Je suppose que c'est un des formats d'export de FM. Il manque
beaucoup d'infos dedans, il n'y a que les balises de changement de
police (gras, italique, ...), celles des entrees d'index et celles des
references croisées.

Avec des balises un peu particulières :
[_Body_] pour les paragraphes
[_Code_] comme equivalent de <pre>
[TAG]
[NOTE]
[WARNING]

Voila en gros

Merci encore
A+
Fanfan
--
- Froid de novembre, range ton membre.
[Dicton Breton]

--OXfL5xGRrasGEqWY
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBub+Rn0FdfiSfsswRAhrbAJ9jmQ38B1AGWju0EyfvXY4qxNnKygCeIHAy
kEwkAlqkJZ9ezZVh7eiaYqQ =Kh+2
-----END PGP SIGNATURE-----

--OXfL5xGRrasGEqWY--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Patrice KARATCHENTZEFF
Francois Cerbelle wrote:
Bonjour la liste,



Les... cela ne se fait pas de diapublier !

Je suis en train de faire la traduction d'un livre O'Reilly et le



lequel ?

[...]

PS: si quelqu'un me propose un programme perl, je suis preneur aussi.
Peut importe le moyen, pourvu que j'obtienne un fichier dans le format
énoncé.



#!/usr/bin/perl -w

use strict;

my $file = $ARGV[0]; # nom du fichier

my $index = "0";

open (FILE, $file)
or die "can't open $file: $!n";
while (<FILE>)
{
if (($_ =~ /({_Index)(.+?)(_})/) && ($index eq "0"))
{
print $2, "n";
++$index;
};
if (($_ =~ /({_StartRange_})(.+?)(_})/) && ($index eq "1"))
{
print $2, "n";
++$index;
};
if (($_ =~ /({_EndRange_})(.+?)(_})/) && ($index eq "2"))
{
print $2, "n";
$index="0";
};
}
close(FILE);

Il faudra peut-être jouer avec les index s'il y en a plus... en tout
cas, cela fonctionne avec tes exemples... c'est gore mais bon...

PK

--
Patrice KARATCHENTZEFF
STMicroelectronics Tel: 04-76-92-67-96
850, rue Jean Monnet
38926 CROLLES Cedex, Courriel:


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Francois Cerbelle
--jI8keyz6grp/JLjh
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Le Fri, Dec 10, 2004 at 04:34:37PM +0100, Patrice KARATCHENTZEFF ecrit :
Francois Cerbelle wrote:
>Bonjour la liste,
Les... cela ne se fait pas de diapublier !


Méa culpa, je réciterai deux sources du noyau ce soir avant de me
coucher.


>Je suis en train de faire la traduction d'un livre O'Reilly et le
lequel ?


Actuellement, c'est "Knoppix à 200%" (Knoppix Hacks, Kyle Rankin)

---end quoted text / fin de citation---


Je te remercie Patrice, mais j'ai déjaeu plusieurs réponses à base de
perl, de sed, ...
En fait, la première réponse fonctionne a merveille. Ceci dit, je
garde précieusement tous ces scripts qui me resserviront peut etre un
jour...

Fanfan
--
Le plaisir le plus délicat est de faire celui d'autrui.
[Jean de La Bruyère]

--jI8keyz6grp/JLjh
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBudk2n0FdfiSfsswRAlzaAKC2wHQjuHGfJ4KuFj20zNih4dTskACgryX5
BCbFl6m5GPXDy53iSp3iS3Y =eyMz
-----END PGP SIGNATURE-----

--jI8keyz6grp/JLjh--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact