Outils pour utilisateurs

Outils du site


Panneau latéral

liens utiles

cenabumix

Site Cenabumix principal : http://www.cenabumix.org/wordpress/

Groupe Cenabumix framavox: https://framavox.org/g/6jsFiPzq/cenabumix

Dokuwiki

Accueil sommaire

Aide a la syntaxe :

corrections_de_masse_dans_writer
  • * Correction de masses dans Writer.**

d’après Dominique Prieur, un de nos membres.

Utilisation des expressions régulières ou REGEX.

En préambule, nous ignorerons totalement le fond du texte que j’ai modifié pour l’exemple. Tout autre article aurait pu faire l’affaire. Voici un texte fautif qui, au format image, se présente comme suit :

Nous voyons qu’une espace (je rappelle que, en typographie, espace est un mot féminin) précède la virgule après « s’accélérer » à la première ligne tout comme le point après le mot « tenable » à la 2e ligne et le guillemet latin (») fermant après le mot sujet juste avant « Sur France Inter ».

Après « télétravail » (ligne 5) dans le corps du texte, je suppose que l’auteur a voulu mettre des points de suspension, en oubliant que ce caractère de suspension compte 3 points et pas un de plus. Là, nous en avons 5 ou 6. Pour autant, il les a correctement placés tout à fait à la fin de son article.

Le texte fautif au format LibreOffice :

Plus la crise sanitaire semble s’accélérer ,moins la position du gouvernement sur le télétravail semble tenable . «Il n’y a pas assez d’encadrement», a déploré le secrétaire général de la CFDT, Laurent Berger, ce mardi matin sur RTL. «Ça ne peut pas être un slogan, comme depuis trois quatre semaines, disant : “Essayez de télétravailler au maximum dans les entreprises”, parce qu’elles font entre 30% et 50% de télétravail….. S’il y a besoin d’aller au-delà, il faut l’encadrer davantage, que le gouvernement soit clair sur le sujet.» . Sur France Inter, son homologue de la CGT, Philippe Martinez, regrettait au même moment qu’il y ait «trop de discours contradictoires» et que le président de la République ne soit «pas clair sur la notion de télétravail»… Nombre 1,29.

Corrigeons pas à pas ce texte. Supposons toutefois qu’il ne fait pas un paragraphe comme ici, mais 200 pages.

Concernant l’espace avant la virgule et le point, nous pouvons le supprimer à la main, mais au bout de 200 pages… Optons pour la fainéantise qui est mon leitmotiv : faire travailler l’ordinateur à ma place.

Faisons « Édition », « Rechercher et remplacer » ou Ctrl h (qui me semble beaucoup plus rapide). Assurons-nous d’abord que la case « Expressions régulières » est cochée.

Je rappelle qu’une expression régulière (traduction fautive de « regular expression ») est un « motif » (match en anglais) susceptible de représenter des caractères différents mais qui ont toujours la même forme (exemple : je cherche tous les mots en majuscule suivis d’une espace suivie de 2 chiffres suivis d’un point. On peut trouver DUPONT 27. tout comme OCTOBRE 10.)

Revenons à notre espace suivie d’un point. Dans le cartouche « Rechercher », nous placerons _\. Je vous rappelle que le sous-lignage _ représente une espace, un appui sur la barre espace.

Dans le cartouche « Remplacer », nous mettrons simplement un point : .

Pourquoi l’antislash \ avant le point dans le cartouche « Rechercher » ? C’est une remarque importante. Certains caractères sont dits réservés dans LibreOffice. Pour voir (la case « expressions régulières » étant toujours cochées), mettez un point sans l’antislash dans le cartouche « Rechercher » et X dans le cartouche « Remplacer » puis validez. Vous verrez que le résultat obtenu n’est pas vraiment celui qui était recherché.

Pas de panique, si vous procédez à une correction de masse qui se révèle être fautive, vous fermez le cadre « Rechercher et remplacer » puis vous faites « Édition » et « Annuler » ou (je suis un épouvantable fainéant assumé) Ctrl z. Vous retrouverez instantanément votre texte tel qu’il était avant de commettre l’erreur.

Je reviens au point. En REGEX, le point représente n’importe quel caractère. L’aide de LibreOffice (F1 puis expressions régulières dans le cartouche de recherche) nous dit que le point représente précisément : « N'importe quel caractère excepté un saut de ligne ou de paragraphe. Par exemple, le terme recherché “cr.me” trouve à la fois “crème” et “crime”. » Vous trouverez à cette page d’aide l’essentiel des expressions régulières utilisées avec LibreOffice.

OK, le point représente pratiquement tous les caractères. Or, je recherche très précisément le point de ponctuation. Il me faut alors le protéger (ou l’échapper) avec l’antislash \. Là, LibreOffice oublie la signification REGEX du point et cherche uniquement le caractère de ponctuation.

Donc, nous avons _\. (je rappelle, le _ est une espace dans mon exemple !) dans rechercher et un simple point dans remplacer. Nous cliquons sur « Remplacer tout » et nos deux fautes sont corrigées.

Nous allons faire la même chose avec la virgule précédée, à tort d’une espace : Ctrl h, « Rechercher » _, (la virgule n’a pas besoin d’être protégée) et uniquement une virgule dans le cartouche « Remplacer ». On valide et la faute est corrigée.

Mais une nouvelle faute apparaît. En effet, notre première phrase devient «  s’accélérer,moins » Si la virgule ne pas être précédée d’une espace, elle doit être suivie de cette espace ! Nous allons remettre avec Ctrl z notre texte dans son état fautif (s’accélérer ,moins), nous maintiendrons _, dans le cartouche « Rechercher » et nous mettrons ,_ dans le cartouche remplacer. En validant, l’erreur est corrigée.

Cette correction pourrait générer un autre genre d’erreur. En fin de texte exemple, nous avons les mots «  s’accélérer,moins » sans espace entre la virgule et le mot « moins » (faute) et le nombre 1,29 (pas de faute).

Si nous recherchons simplement la virgule dans le cartouche « Rechercher » et la virgule suivie d’une espace dans le cartouche « Remplacer », nous aurons plein de corrections fautives, notamment les virgules qui seront alors suivies de deux espaces, pour celles qui n’étaient pas fautives.

Dans nos deux exemples, nous observons que nos virgules fautives sont encadrées de mots et nos virgules non fautives sont entourées de chiffres. Il nous faut alors distinguer les deux.

Au bas de la page d’aide que nous avons ouverte (F1 puis expressions régulières dans le moteur de recherche), nous voyons différents termes génériques susceptibles de nous intéresser, notamment [:alpha:]. Cette option REGEX représente précisément un caractère alphabétique. C’est ce qu’il nous faut.

Nous allons donc passer dans le cartouche « Rechercher » (en faisant Ctrl h bien sûr) [:alpha:],[:alpha:] en n’oubliant bien sûr pas la virgule entre les deux. Nous demandons ainsi à LibreOffice de chercher un caractère alphabétique, quel qu’il soit, suivi d’une virgule suivi immédiatement d’un autre caractère alphabétique quelconque. Dans « Remplacer », nous plaçons ,_ (je rappelle que le souligné _ représente un appui sur la barre espace.

L’espace manquant après la virgule apparaît bien et nous voyons que notre nombre 1,29 n’a pas été corrigé.

C’était le but poursuivi, mais notre texte est à nouveau fautif. En effet, la dernière phrase devient « … semble s’accélére, oins… » le « r » de s’accélérer et le « m » de moins ont disparu. C’est normal, vous avez demandé à LibreOffice de remplacer un caractère alphabétique suivi d’une virgule suivi d’un caractère alphabétique par une virgule suivie d’une espace. C’est ce qu’il a fait.

Il va donc nous falloir l’obliger à se souvenir du caractère précis qui est concerné par [:alpha:] avec des parenthèses. Nous placerons alors dans le cartouche « Rechercher » ceci ([:alpha:]),([:alpha:]) et, dans « Remplacer » : $1,_$2

La phrase « … semble s’accélérer, moins… » est corrigée et notre nombre 1,29 n’a pas été modifié.

Que s’est-il passé ? Nous avons demandé à LibreOffice de mémoriser les caractères alphabétiques en mettant ([:alpha:]) avec des parenthèses. Nous avons récupéré ces variables avec $1 pour la première variable, $2 pour la seconde. Je ne connais pas jusqu’à quelle profondeur de variables ($3, $4, $n)peut aller LibreOffice. Pour être franc, il est exceptionnel que j’aille jusqu’à $3 !

Il nous reste les points de suspension fautifs après le mot « télétravail » de la 5e ligne. L’auteur a mis 5 points, alors que l’exacte ponctuation est 3 points, pas un de plus.

Certes, avec Ctrl h et en décochant « Expressions régulières », en mettant 5 points dans « Rechercher » et 3 points dans remplacer, nous allons résoudre le problème. Mais je vous rappelle que notre texte fait 200 pages. De plus, l’auteur a pu, ailleurs, mettre 4 ou 6 points successifs voire plus ! Notre méthode simple n’est pas exhaustive. En cochant « Expressions régulières », nous allons passer dans le cartouche « Rechercher » ceci \.{4,} et … (3 points successifs) dans « Remplacer ». En validant, la ponctuation fautive est corrigée.

Nous avons demandé à LibreOffice de rechercher un point (\.) qui serait reproduit 4 fois ou plus ({4,} on n’oublie pas la virgule!) et on remplace ce motif par …

Dans cet exemple, vous pouvez rencontrer une vraie correction faite d’autorité par LibreOffice et qui transforme les 3 points successifs « … » (forme malgré tout fautive) par la vraie ponctuation comme ceci … qui correspond à un caractère unique. Si tel devait être le cas, notre REGEX \.{4,} serait inopérante dans le sens où LibreOffice trouverait un caractère de ponctuation correct … suivi de deux points. Ça ne correspondrait pas au motif recherché (4 points successifs ou plus). LibreOffice vous répondrait à raison « Terme recherché introuvable » et c’est normal.

En ce cas, et pour pouvoir tester notre correction, je vous invite à supprimer à la main les points de suspension ainsi que les deux points suivants et à les remettre à la main.

À bientôt pour d’autres aventures avec les REGEX et LibreOffice ☺

corrections_de_masse_dans_writer.txt · Dernière modification: 2020/11/02 15:54 de jean