Les expressions rationnelles sont une manière de spécifier des conditions devant être remplies en pensant à une situation. Normalement, lorsque vous faites une recherche dans un éditeur de texte, vous spécifiez le texte à rechercher littéralement, à l'opposé, en utilisant les expressions rationnelles, vous décrivez à quoi ressemble un élément donnée. Les exemples illustrant cela incluent je recherche le mot KDE, mais uniquement en début de ligne, ou je recherche le mot le, mais entouré d'espace, ou bien encore je cherche les fichiers commençant par le mot test, suivi par des numéros, par exemple test12, test107 et test007.
Vous construisez des expressions rationnelles à partir d'expressions rationnelles plus petites, exactement comme vous construirez un immense jouet en Lego à partir de sous-parties plus petites. De même que dans le monde des Lego, il existe un certain nombre de blocs de construction de base. Dans les chapitres suivants, je décrirai chacun de ces blocs de construction de base en illustrant par un certain nombre d'exemples.
Exemple 2.1. Recherche d'un texte normal
Si vous désirez rechercher un texte donné, les expressions rationnelles ne sont vraiment pas un bon choix. La raison à cela est que les expressions rationnelles associent des significations particulières à certains caractères. Ce qui comprend les caractères suivants : .*|$. Ainsi, si vous désirez chercher le texte kde. (c'est-à-dire les caractères kde suivi d'un point), alors vous devrez spécifier cela de cette manière kde\.[1] Écrire \. au lieu d'un simple . est appelé échappement.
Exemple 2.2. Faire correspondre des URL
Lorsque vous sélectionnez quelque chose ressemblant à une URL dans KDE, alors le programme klipper proposera de lancer konqueror avec l'URL sélectionnée.
Klipper arrive à faire cela en associant la sélection à plusieurs expressions rationnelles différentes, lorsqu'une des expressions rationnelles correspond, la commande adaptée est proposée.
L'expression rationnelle pour les URL spécifie (entre autres choses), que la sélection doit commencer par le texte http://. Cela est spécifié dans les expressions rationnelles en préfixant le texte http:// par un chapeau (le caractère ^).
La paragraphe ci-dessus est un exemple pour faire des reconnaissances par rapport à la position en utilisant des expressions rationnelles. De façon identique, la position fin-de-ligne peut être associée en utilisant le caractère $ (c'est-à-dire le signe du dollar).
Exemple 2.3. Rechercher le mot le, mais pas leur, souffle ou raleur.
Deux types de positions supplémentaires peuvent être utilisés dans le paragraphe ci-dessus, nommé placé en limite de mot et non placé en limite de mot. Les positions sont spécifiées en utilisant le texte \b (pour word-boundary, limite de mot) et \B (pour non-word boundary, non-limite de mot)
Ainsi, la recherche du mot le peut être faite en utilisant l'expression rationnelle \ble\b. Ce qui spécifie que nous recherchons le sans lettres de chaque côté (c'est-à-dire avec une limite de mot de chaque côté).
La quatrième expression rationnelle pour des mises en correspondances en fonction de la position sont insérées dans l'éditeur d'expressions rationnelles en utilisant l'outil des quatre positions différentes.
Exemple 2.4. Rechercher soit ceci soit cela.
Imaginez que vous désiriez parcourir votre document pour rechercher soit le mot ceci soit le mot cela. Avec une méthode de recherche normale, vous pouvez faire cela en deux passes : lors du premier parcours, vous rechercheriez ceci, et la seconde fois vous rechercheriez cela.
En utilisant la recherche avec les expressions rationnelles, vous rechercherez les deux dans la même passe. Vous pouvez réaliser cela en cherchant ceci|cela, c'est-à-dire en séparant les deux mots par une barre verticale.[2]
Dans l'éditeur d'expressions rationnelles, vous ne devez pas écrire la barre verticale vous-même, mais vous devez sélectionner plutôt l'outil alternatif, et insérer les expressions rationnelles plus petites de chaque côté.
Exemple 2.5. Reconnaître n'importe quel caractère
Les expressions rationnelles sont souvent comparées à la recherche par joker des consoles - c'est la possibilité de spécifier un certain nombre de fichiers par un astérisque. Vous reconnaîtrez encore plus la recherche par jokers avec les exemples suivants :
ls *.txt- ici*.txtest le joker de la console pour trouver chaque fichier finissant par l'extension.txt.cat test??.res- trouve chaque fichier commençant partestsuivi de deux caractères quelconques, et enfin suivi par.res
Dans une console, les astérisques correspondent à n'importe quel caractère répété plusieurs fois. En d'autres termes, les astérisques correspondent à n'importe quel caractère. Cela s'écrit ainsi .* avec la syntaxe des expressions rationnelles. Le point correspond à un seul caractère quelconque, c'est-à-dire à un caractère, et l'astérisque spécifie que l'expression rationnelle le précédant devra être présente de multiples fois. Réunis ensemble, cela signifie un unique caractère quelconque répété un certain nombre de fois.
Cela peut sembler énormément compliqué, mais en ayant une vue plus globale, vous découvrirez toute sa puissance. Laissez-moi vous montrer une autre expression rationnelle de base : a. La lettre a isolée est une expression rationnelle qui correspond à une lettre unique, pour ne pas la nommer, la lettre a. Si nous combinons cela avec l'astérisque, c'est-à-dire a*, alors nous avons une expression rationnelle correspondant à plusieurs a.
Nous pouvons combiner plusieurs expressions rationnelles l'une après l'autre, par exemple ba(na)*. [3] Imaginons que vous ayez écrit cette expression rationnelle dans la zone de recherche d'un éditeur de texte, alors vous pourrez trouver les mots suivants (parmi tant d'autres) : ba, bana, banana, bananananananana
Après vous avoir donné l'information ci-dessus, il ne devrait plus être difficile pour vous de trouver le joker de la console test??.res dans une expression rationnelle. Réponse : test..\.res. Le point seul correspond à un seul caractère. Pour trouver un seul point, vous devez écrire \.[4]. En d'autres mots, l'expression rationnelle \. correspond à un point, alors qu'un point seul correspond à n'importe quel caractère.
Dans l'éditeur d'expressions rationnelles, la répétition d'une expression rationnelle est créée en utilisant l'outil de répétition.
Exemple 2.6. Remplacer & par & ; dans un document HTML
En HTML, le caractère spécial & doit être écrit & ; - c'est la même chose que l'échappement dans les expressions rationnelles.
Imaginez que vous ayez écrit un document HTML dans un éditeur normal (par exemple XEmacs ou Kate), et que vous ayez totalement oublié cette règle. Ce qu'il vous faudra faire lorsque vous réaliserez votre erreur sera de remplacer chaque occurrence de & par & ; .
Cela est fait facilement en utilisant une recherche normale et le remplacer, mais, cependant, il y a un pépin. Imaginez que vous vous êtes souvenu de cette règle - juste un peu - et que vous en avez corrigés quelques uns. Les remplacer tous sans conditions aura pour conséquence de remplacer & ; par &.
Ce que vous désirez vraiment faire c'est que les & soient uniquement remplacés s'ils ne sont pas suivis des lettres amp ; . Vous pouvez faire cela en utilisant les expressions rationnelles avec la préanalyse positive.
L'expression rationnelle, qui ne cherche qu'un et commercial s'il n'est pas suivi des lettres & ressemble à : &(?!amp ; ). Ce qui est, évidemment, plus facile à lire en utilisant l'éditeur d'expressions rationnelles, où vous utiliserez les outils de préanalyse.
[1] L'éditeur d'expressions rationnelles résout ce problème en prenant en compte les règles d'échappement à votre place.
[2] Notez que de chaque côté de la barre verticale, il y a une expression rationnelle, donc cette fonctionnalité ne sert pas uniquement à chercher deux zones de texte différentes, mais sert aussi à chercher deux expressions rationnelles différentes.
[3] (na)* affirme simplement que ce qui est à l'intérieur des parenthèses est répété un certain nombre de fois.
[4] On appelle cela échappement