Recherche et remplacement d’expressions régulières

Une expression régulière (raccourcie comme « regex » ou « regexp »; aussi appelée expression rationnelle) est une chaîne de caractères qui décrit un ensemble de chaînes de caractères possibles. Ces modèles sont habituellement utilisés par les algorithmes de recherche de chaînes dans l’exécution d’opérations « trouver » ou « trouver et remplacer » sur des chaînes, ou pour la validation d’entrées. Il s’agit d’une technique développée en informatique théorique et issue des théories mathématiques des langages formels. (Source : Wikipedia, l’encyclopédie libre)

Concepts de base

(Source : Wikipédia)

Une expression régulière, souvent appelée motif, définit un ensemble de chaînes nécessaires à une fin particulière. Une façon simple de définir un ensemble limité de chaînes consiste à énumérer ses éléments ou ses membres. Cependant, il existe souvent des moyens plus concis : par exemple, l’ensemble contenant les trois chaînes « Handel », « Händel » et « Haendel » peut être défini par le motif H(ä|ae?)ndel; nous disons donc que ce motif correspond à chacune des trois chaînes. Dans la plupart des formalismes, s’il existe au moins une expression régulière qui correspond à un ensemble particulier, il existe un nombre infini d’autres expressions régulières qui lui correspondent également – la spécification n’est pas unique. La plupart des formalismes fournissent les opérations suivantes pour constituer des expressions régulières.

Booléen « ou »
Une barre verticale qui sépare les alternatives. Par exemple, « gray|grey » peut correspondre aux deux façons d’écrire « gris » en anglais.
Regroupement
Les parenthèses sont utilisées pour définir la portée et la préséance des opérateurs (entre autres utilisations). Par exemple, « gray|grey » et « gr(a|e)y » sont des motifs équivalents qui décrivent l’ensemble de « gray » ou « grey ».
Quantification
L’ajout d’un quantificateur après une balise « token » (comme un caractère) ou un groupe permet de préciser la fréquence à laquelle un élément antérieur pourra se produire. Les quantificateurs les plus courants sont le point d’interrogation ?, l’astérisque * (dérivé de l’étoile de Kleene) et le signe plus + (Kleene Plus).
?
Le point d’interrogation correspond à zéro ou à une occurrence de l’élément précédent. Par exemple, colou?r correspond à « color » et « colour ».
*
L’astérisque correspond à zéro ou à plusieurs occurrences de l’élément précédent. Par exemple, ab*c correspond à « ac », « abc », « abbc », « abbbc » et ainsi de suite.
+
Le signe plus correspond à une ou à plusieurs occurrences de l’élément précédent. Par exemple, ab+c correspond à « abc », « abbc », « abbbc » et ainsi de suite, mais pas à « ac ».
{n}
L’élément précédent est apparié exactement n fois.
{min, }
L’élément précédent est apparié au moins une fois.
{min,max}
L’élément précédent est apparié au moins une fois, mais pas plus que le nombre maximum indiqué.
Caractère générique

Le caractère générique . correspond à n’importe quel caractère. Par exemple, a.b correspond à toute chaîne qui contient un « a » suivi de tout autre caractère, puis d’un « b »; a.*b correspond à toute chaîne qui commence par un « a » et se termine par un « b ».

Ces constructions peuvent être combinées pour former des expressions arbitrairement complexes, un peu comme on peut construire des expressions arithmétiques à partir de chiffres et d’opérations (+, −, × et ÷). Par exemple, H(ae?|ä)ndel et H(a|ae|ä)ndel sont deux motifs valides qui correspondent aux mêmes chaînes que l’exemple précédent, H(ä|ae?)ndel.

Utilisation d’expressions régulières dans Dreamweaver

Ouvrez la boîte de dialogue de recherche en appuyant simultanément sur les touches Ctrl et H. Dans les options de filtrage, choisissez Expressions régulières Expressions régulières

Exemple 1 : remplacer l’italique par du gras

Dans iService, l’italique est réservé au texte qui renvoie à une loi ou un règlement, comme la Loi sur la protection des renseignements personnels.

Des expressions régulières peuvent être utilisées pour remplacer le contenu en italique <em> par du gras <strong>. Dans cet exemple, recherchez le segment <em>(.*?)</em> et remplacez le par <strong>$1</strong>.

Copiez collez les lignes de code suivantes dans Dreamweaver, en mode « Code » :

<em>Lorem ipsum dolor sit amet</em>, consectetur adipisicing elit. Velit perspiciatis aperiam quas, eaque nulla modi expedita ab, iure ex, vel ipsum minus praesentium molestiae saepe. Itaque praesentium in, illum temporibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. At voluptatibus, quas autem officiis, laboriosam non! Explicabo, delectus iusto blanditiis nulla quidem similique, deleniti molestias vero ut <em>assumenda officia</em> fuga quos. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quam nihil dignissimos, <em>natus veniam consequuntur</em> ad eius libero culpa nesciunt nulla, modi vitae debitis eveniet <em>tempora iste numquam</em> odio nam dolor.

Explication du code

<em>(.*?)</em>

  1. Balise d’ouverture <em>
  2. Texte suivant la balise de texte en italique (.*?)
  3. Balise de fermeture </em>
Parenthèses ()
Regroupement sauvegardé comme variable pouvant être rappelée
Point "."
Caractère générique qui correspond à n’importe quel caractère.
Astérisque "*"
Quantificateur qui correspond à zéro ou à plusieurs occurrences de l’élément précédent; dans le cas présent, il s’agit d’un caractère générique.
Point d’interrogation "?"
Quantificateur qui correspond à zéro ou à une occurrence de l’élément précédent; dans le cas présent, il s’agit de l’astérisque.

Dans la section « Remplacer » de la fenêtre « Rechercher et remplacer », nous avons utilisé en ouverture balise de texte en gras <strong>, suivie de la première variable enregistrée dans l’expression régulière « $1 », suivie de la balise de fermeture de texte en gras </strong>. <strong>$1</strong>

Exemple de liste numérotée

Puisque c’est le html qui numérotera cette liste, nous devons supprimer le numéro, la période et un espace de notre liste d’éléments.

Rechercher : <li>[\d]+\.[\s]+ Le segment [\d]+ représente un ou plusieurs chiffres; le segment [\s]+ représente un ou plusieurs espaces.

Remplacer par : <li>

<ol>
<li>1. Élément de la liste</li>
<li>2. Élément de la liste</li>
<li>3. Élément de la liste</li>
<li>4. Élément de la liste</li>
<li>5. Écureuil</li>
<li>6. Élément de la liste</li>
<li>7. Élément de la liste</li>
<li>8. Élément de la liste</li>
</ol>