FR/Documentation/AOO4 User Guides/Advanced/FR RegExp1
Contents
- 1 Introduction aux expressions régulières
- 2 Présentation
- 3 Caractères spéciaux
- 4 Groupes et références
- 5 Autres expressions
- 6 Limites à l'utilisation des expressions régulières
- 7 Les expressions régulières avec Writer
- 8 Les expressions régulières avec Calc
- 9 Les expressions régulières avec Impress
- 10 Plus d'informations
Introduction aux expressions régulières
Cette page est à un stade de PROJET.
Présentation
Nous avons déjà indiqué ce qu'étaient les expressions régulières. Avec des expressions régulières (à partir de maintenant, RegExp), vous pouvez faire se correspondre des chaînes de catactères non fixes. Par exemple, l'expression
[:number:]
correspond à n'importe quel chiffre,
[:number:] +
correspond à un nombre entier arbitraire et
[:number:] + \.? [:number:] *
correspond à un nombre arbitraire qui peuvent ou non avoir une partie décimale séparés par un point.
Comme il est possible de voir à partir de ces exemples, avec RegExp plusieurs caractères ont une signification particulière. Sur ce document, les principales caractéristiques du moteur RegExp basé sur le projet International Components for Unicode (ICU) et utilisé par Apache OpenOffice seront commentés.
Caractères spéciaux
Comme mentionné précédemment, plusieurs caractères ont une signification particulière dans les expressions régulières. Ces caractères sont tous les types de crochets, la barre oblique inverse, le point, le symbole du dollar, etc. Afin de rechercher les caractères spéciaux nous devons les précéder d'une barre oblique inverse: par exemple, pour rechercher [ il est nécessaire d'écrire
\[
et bien sûr, afin de rechercher la barre oblique inverse, deux barres obliques inversées doivent être écrites
\\
Le point
Le point peut être utilisé pour faire correspondre un caractère générique.
d.t
correspond à dat, dot, DUT ... même DXT.
L'expression
[:any:]
est équivalent au point.
Le point d'interrogation
Utilisé pour la correspondance de zéro ou une instances du caractère précédent. Par exemple
mat?
correspond à mat comme à math.
Le plus
Utilisé pour faire correspondre une ou plusieurs instances.
L'astérisque
Correspond à un nombre arbitraire d'instances, voire zéro :
mat*
correspond à mat, math, mathhhhhh ...
Les accolades
Elles peuvent être utilisées pour définir le nombre de fois que le caractère précédent doit être répété. Par exemple
ou{2,5}ch!
correspond à ouuch!, ouuuch!, ouuuuch!, ouuuuuch!, mais pas à ouch!
Utilisez un seul nombre correspond au nombre exact
ou{3}ch!
Vous ne trouverez que ouuuch!, tandis que
ou{3,}ch!
Trouvera le mot avec au moins trois u.
L'accent circonflexe
Le signe ^ avoir plusieurs significations selon le contexte. D'une part, il peut être utilisé pour correspondre au début d'un paragraphe. Par exemple, dans un paragraphe comme
le texte sur le livre
l'expression
^le
correspondra à la première le, mais pas le second.
Entre crochets, le ^ est utilisé pour annuler un caractère. Par exemple,
[^a]
correspondra à n'importe quel caractère qui n'est pas un un, tandis que
[^ar]
correspondra à un caractère qui n'est ni un a ni un r.
Le signe dollar $
Ce symbole a des significations différentes sur différents contextes.
Utilisé seul, il trouve des sauts de paragraphe, mais utilisé avec d'autres caractères, il va trouver ces caractères à la fin du paragraphe. Par exemple, le paragraphe
Votre livre est sous ce livre
l'expression
livre$
trouvera la seconde instance de livre, mais pas la première. Sur le champ Remplacer de la boîte de dialogue de recherche/remplacement, le signe $ a une signification différente que nous verrons ci-dessous.
La barre oblique inverse \
Comme mentionné précédemment, la barre oblique inverse peut être utilisée comme caractère d'échappement des symboles spéciaux afin qu'il puissent être recherchés pour eux-mêmes, mais elle peut aussi donner un sens différent à des caractères normaux. Par exemple,
\b
recherchera une limite de mot:
\bjus
correspondra aux trois premiers caractères de juste, justice, justement ... mais pas ajuster, tandis que
rum\b
se trouvent les trois derniers caractères dans decorum, ... mais pas ruminer.
L'expression
\w
trouvera n'importe quel caractère à l'intérieur d'un mot.
\W
(W majuscule) trouve un caractère qui n'est pas un élément de mot (un espace, un point d'interrogation ... etc)
\t
trouvera un taquet de tabulation.
\n
trouvera un saut de ligne, mais dans la boîte de dialogue de remplacement insérera un saut de paragraphe (celui que vous trouvez avec $).
La combinaison \u suivie par un nombre hexadecimal peut être utilisé pour rechercher des caractères spécifiques avec leur code Unicode. Par exemple
\ U03b4
trouvera le caractère grec delta δ
La barre verticale |
Cela peut être utilisé pour définir des alternatives. Par exemple
mo[t|r]e
vous trouverez soit mote ou more. Elle peut être utilisée sur les expressions avec plus d'options, comme [a | b | c].
Groupes et références
Le regroupement des expressions avec parenthèses, comme dans
(Expression1)(expression2)
donne la possibilité d'appeler chaque expression plus tard sur la formule RegExp avec une barre oblique inverse suivie d'un numéro: \1 pour appeler la première expression, \2, la deuxième, etc.
Par exemple, l'expression régulière
\b(\w+) *\1\b
(Notez l'espace entre (w+) et l'*) peut être utilisée pour trouver des mots répétés: deux expressions \b trouveront une limite de mot, \w+ trouvera un ou plusieurs éléments de texte tandis que le \1 fait appel aux éléments mêmes qui se trouvent sur le groupe (\w+).
Dans le champ Remplacer d'une boîte de dialogue de remplacement, vous devez utiliser le signe dollar suivi par le nombre d'expression, au lieu de la barre oblique inverse.
Par exemple,chercher par
\B(\w+) *\1\b
et remplacer par
$1
permettra d'éliminer tout mot dupliqué sur le texte.
Autres expressions
[:alpha:]
trouve n'importe quel caractère ASCII, mais pas les caractères accentués, ni le nombre, pour lesquels vous devez utiliser
[:any:]
ou le point, comme vu précédemment.
[:number:]
ou
[:digit:]
trouve un seul chiffre.
[:space:]
trouve tout type d'espace, même ceux "non-breaking".
Il est possible d'utiliser le signe - avec les crochets pour définir des plages. Par exemple,
[0-8]
se trouver n'importe quel chiffre, sauf 9.
Dans la boîte de remplacement,
&
permet d'insérer la chaîne trouvée dans la recherche RegExp.
Limites à l'utilisation des expressions régulières
RegExp ne peut chercher qu'à l'intérieur d'un paragraphe: vous ne pouvez pas les utiliser par exemple pour trouver deux paragraphes à la recherche d'une fin particulière sur le premier et d'un début particulièrement sur le second.
Les marques de paragraphe ne peuvent être trouvées en combinaison avec tout autre texte. Par exemple, sur un paragraphe comme
Un petit exemple. C'est la fin du texte.
l'expression
\.$
ne trouvera que le point final, pas le saut de paragraphe.
Outre les expressions déjà indiquées (&, \n, l'appel de groupes avec le signe du dollar suivi d'un nombre), la boîte de dialogue "Remplacer par" n'accepte pas d'expression régulière.
Les expressions régulières avec Writer
Sur Writer, allant dans Edition → Rechercher & remplacer ouvrira le menu Rechercher&Remplacer. Là, avec un clic sur Plus d'options vous trouverez une case à cocher pour activer l'outil RegExp:
Comme vous pouvez le voir sur la capture d'écran, il est possible de combiner RegExp avec d'autres options comme Format .
Les expressions régulières avec Calc
TODO
Rechercher et remplacer avec la boîte de Dialogue de Recherche
TODO
Les expressions régulières sur les formules de Calc
TODO
Les expressions régulières avec Impress
TODO