\documentclass[fontsize=11pt, paper=a4, DIV=classic]{scrartcl}
\usepackage[french]{babel}

\usepackage{fontspec}
\setmainfont{Old Standard}
%\usepackage{libertine}
\usepackage{comment}
\usepackage{csquotes}

\usepackage[toc]{multitoc}
\usepackage{graphicx}
\usepackage{verse}
\usepackage[french]{varioref}
\usepackage{setspace}
\onehalfspacing


\subject{}
\title{Utiliser les expressions régulières}
\subtitle{}
\author{Estelle Debouy}
\date{}

\usepackage{hyperref}
\hypersetup{pdfstartview=FitH, backref, colorlinks=true,
  linkcolor=blue, urlcolor=blue, linktocpage=true}%la dernière option est liée à la toc sur deux colonnes.


\usepackage[style=authortitle, backend=bibtex]{biblatex}
\DefineBibliographyStrings{french}{byeditor={{é}d.}}
\addbibresource{mabiblio.bib}



\begin{document}
\maketitle
%\renewcommand{\contentsname}{Sommaire}
%\tableofcontents


\section{Définition}
On appelle « expressions régulières » un certain nombre de signes conventionnels, utilisables par exemple avec la fonction « Rechercher/remplacer » de LibreOffice, qui permettent de retrouver des séquences complexes de caractères dans un document.

Pour que le logiciel prête aux signes en question leur valeur \enquote{d’expressions régulières}, et non leur sens habituel (\verb|^| = accent circonflexe, \verb|$| = dollar, etc.), il ne faut pas omettre de cocher la case \enquote{expressions régulières} dans la boîte « Rechercher/Remplacer » de LibreOffice, sous le bouton « Plus d’options ».

Voici quelques expressions régulières :
\begin{itemize}
\item \verb|^| = début de paragraphe. Exemple : la recherche « \verb|^|Roméo » sélectionnera le mot «~Roméo~» seulement s'il commence un paragraphe.
\item \verb|$| = fin de paragraphe. Exemple : la recherche « Roméo\$ » sélectionnera le mot «~Roméo~» seulement s'il termine un paragraphe.
\item \verb|^$| = deux marques de paragraphe consécutives.
\item \verb|\n| = une marque de paragraphe
\item \verb|\t| = une tabulation
\item . = un caractère quelconque
\end{itemize}


\section{Exemples d'application}

\paragraph{Application n° 1} Vous avez peut-être constaté qu'après avoir récupéré une œuvre en prose depuis une bibliothèque numérique (Gallica par exemple), il faut très souvent supprimer les retours à la ligne intempestifs qu'on appelle \emph{hard wrap}. Exemple :

\includegraphics[scale=0.5]{hard_wrap.png} 

Pour supprimer ces retours à la ligne, le plus simple est d’utiliser un éditeur comme Notepad++ : allez dans le menu TextFX, commande TextFXEdit, sous-commande Unwrap Text. Les retours à la ligne simples sont convertis en fin de ligne (\emph{soft wrap}) tandis que les doubles retours subsistent.

Mais il est possible de rester dans LibreOffice et d’utiliser les expressions régulières. Notez d'abord qu'il ne faudra pas supprimer tous les retours à la ligne. Là où il y a plusieurs retours à la ligne (symbolisés par au moins deux pieds de mouche ¶), il faudra conserver un retour à la ligne : 
\begin{enumerate}
\item vous devez donc commencer par rechercher la séquence \verb|^$| (expression qui désigne les sauts de paragraphes) et la remplacer par le caractère § par exemple, de façon à les marquer;
\item puis recherchez la séquence \verb|$| (expression qui désigne les retours à la ligne) et remplacez-la par une espace : tous les retours à la ligne du texte sont alors remplacés. Vous obtenez alors un texte « au kilomètre » ;
\item il est maintenant temps de réintroduire les sauts de paragraphes : recherchez le caractère § et remplacez-le par la séquence \verb|\n| (qui introduit un retour à la ligne là où l'on voulait qu'il en restât).
\end{enumerate}

\paragraph{Application n° 2} Les expressions régulières sont aussi très utiles pour appliquer un formatage particulier à un terme donné, seulement quand il se trouve dans une certaine position. Prenons l'exemple d'une pièce de théâtre téléchargée depuis une bibliothèque numérique: comment retrouver les occurrences des noms de personnages servant à indiquer les prises de parole (distinctes des occurrences où le nom est effectivement prononcé par un personnage) afin de les définir en tant que paragraphes, ce qui permettra de leur appliquer des petites majuscules?
\begin{enumerate}
\item pour chaque personnage, recherchez les passages où il se trouve en début de ligne et ajoutez une marque de paragraphe après: recherchez « \verb|^|Père Ubu » et remplacez par « Père Ubu\verb|\n| » ;
\item vous pouvez alors rechercher toutes les occurrences qui sont maintenant isolées dans un paragraphe afin de leur appliquer des petites majuscules: recherchez \verb|^|Père Ubu\verb|$| (et pensez à choisir Tout rechercher).
\end{enumerate}

\bigskip

Pour une liste plus complète des expressions régulières, voir \url{https://help.libreoffice.org/Common/List_of_Regular_Expressions/fr}.


\begin{comment}
\section{Entraînez-vous}

\paragraph{Exercice n° 1} Trouvez des mots commençant par la lettre "a".

Réponse : <a*>

Explication: l'expression a* recherche les chaînes commençant par "a". Le caractère générique < indique que la lettre "a" doit être le début d'un mot, et le caractère générique > indique que le dernier caractère de la chaîne doit être la fin d'un mot.

\paragraph{Exercice n°2} Réécrivez sous la forme "AAAA-MM-JJ" des dates initialement écrites sous la forme "JJ/MM/AAAA" (par exemple, "14/07/1789" doit devenir "1789-07-14").

Réponse: recherchez ([0-9]{2})/([0-9]{2})/([0-9]{4}) à remplacer par : \verb|\3-\2-\1|

Explication: dans la formule de recherche, les parenthèses définissent trois sous-formules implicitement numérotées 1, 2 et 3. On les réécrit dans l'ordre inverse d'où \verb|\3|, \verb|\2| puis \verb|\1|.
\end{comment}

\end{document}