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

Mots avec des accents dans une regexp

5 réponses
Avatar
joao
Salut =E0 tous,

Je suis en train de mettre en ligne, sous forme hypertexte, le projet de tr=
ait=E9
constitutionnel europ=E9en.

Je suis parti des .pdf disponibles en ligne, j'ai utilis=E9 pdftotext de la
distrib xpdf pour en extraire une version .txt, et l=E0 j'=E9cris un petit =
programme
en perl qui d=E9cortique tout =E7a pour reconstituer la structure : parties=
, titres,
chapitres, sections, articles, etc, et qui g=E9n=E8re du XML derri=E8re.

J'utilise =E9videmment beaucoup d'expressions r=E9guli=E8res, avec notammen=
t \w, le
caract=E8re constituant d'un mot : or mon perl ne reconnait pas les lettres
accentu=E9es fran=E7aises parmi ces caract=E8res-l=E0 ! Les lettres accentu=
=E9es sont
consid=E9r=E9es comme des s=E9parateurs de mots...

Quelqu'un peut-il m'indiquer la marche =E0 suivre pour corriger =E7a ? j'im=
agine
qu'il faut d=E9finir une LOCALE (?) mais j'avoue que je n'y connais rien, e=
t mes
quelques tentatives naives n'ont rien donn=E9.

Merci,
Joao

--=20
joao at teaser point fr
http://domainepublic.org

5 réponses

Avatar
joao
joao writes:

J'ai oublié les précisions d'usage, désolé ! J'utilise perl v5.8.0, sur une Red
Hat 9.0.

--
joao at teaser point fr
http://domainepublic.org
Avatar
Nicolas George
joao wrote in message :
J'utilise évidemment beaucoup d'expressions régulières, avec notamment w, le
caractère constituant d'un mot : or mon perl ne reconnait pas les lettres
accentuées françaises parmi ces caractères-là ! Les lettres accentuées sont
considérées comme des séparateurs de mots...


La solution que je préconise personnellement, c'est de mettre :

binmode $filehandle, ":encoding(XXX)";

après l'ouverture de $filehandle. Ce qu'il faut mettre à la place de XXX
n'est pas très clair, et dépend du comportement de la commande appelée. Avec
pdftotext, ça sera souvent « iso-8859-1 ». À vérifier.

Avatar
Denis -esp2008-
Bonjour,

J'ai oublié les précisions d'usage, désolé! J'utilise perl v5.8.0, sur ne Red
Hat 9.0.


Bon, normalement selon l'usage j'aurais dû me contenter d'un "rtfm", mais
il faut savoir parfois passer outre l'usage...

`perldoc perl` pour avoir la liste des pages de documentation, on voit que
"perlfaq6" traite de "Regexes"

Et en faisant `perldoc perlfaq6` on obtient:
How can I make "w" match national character sets?
Put "use locale;" in your script. The w character class is taken from
the current locale.

Et si on n'aime pas l'anglais, il reste http://perl.enstimac.fr/DocFr.html

Bonne continuation,

--
Denis

Avatar
Paul Gaborit
À (at) Mon, 18 Apr 2005 22:26:30 +0200,
joao écrivait (wrote):
joao writes:

J'ai oublié les précisions d'usage, désolé ! J'utilise perl v5.8.0, sur une
Red Hat 9.0.


La version 5.8.0 n'est vraiment pas stable du tout. Les versions 5.8.x sont
"acceptables" à partir de la révision 5.8.3. Nous en sommes actuellement à la
version 5.8.6.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
joao
Denis -esp2008- writes:

Bonjour Denis,

Bon, normalement selon l'usage j'aurais dû me contenter d'un "rtfm", ma is
il faut savoir parfois passer outre l'usage...


Merci d'être passé outre :-)

Put "use locale;" in your script. The w character class is taken from
the current locale.


Effectivement, avec ça, ça marche, à condition de définir auparavant
LC_CTYPE=fr_FR.iso8859-1.

--
Denis


Merci !
Joao


--
joao at teaser point fr
http://domainepublic.org