Référence d'Expression régulière

PreviousUpNext

Les expressions régulières sont une manière puissante de définir des modèles de recherche et d'appariement.  Beyond Compare vous permet d'utiliser des expressions régulières lors de recherche dans du texte, et lors de la spécification de règles pour classifier les textes.  Le support d'expression régulière dans Beyond Compare est un sous-ensemble de la syntaxe d'Expression Régulière Compatible Perl (PCRE, Perl Compatible Regular Expression).

Alors que les expressions régulières peuvent être un thème complexe, il existe plusieurs excellentes ressources à leur sujet.  Une de ces ressources est un livre dont le titre est Mastering Regular Expressions.  Une autre excellente ressource est A Tao of Regular Expressions de Steve Mansour, une copie peut être trouvée à :

    www.scootersoftware.com/RegEx.html

Une expression régulière est composée de deux types de caractère :  les caractères normaux, et les métacaractères.  Lors de l'exécution de recherche d'égalité, les métacaractères ont une signification spéciale pour contrôler comment le test d'égalité sera fait, et servent de caractères génériques.  Les caractères normaux sont toujours comparés tels quels.  Pour comparer à un métacaractère, déspécialiser-le ("escape") de sa signification en le préfixant avec un antislash "\" (Caractère d'échappement, "Escape").  Il y a de nombreux types de métacaractères, chacun étant détaillé ci-dessous.

Métacaractères - Séquence d'échappement

Séquence d'échappement

Signification

\xnn

caractère de code hexa nn

\x{nnnn}

caractère de code hexa nnnn

\x{F000}

caractère de valeur nulle

\t

tabulation (0x09)

\f

saut de page (0x0C)

\a

bip (0x07)

\e

Échap. (0x1B)

Métacaractères - Classes prédéfinies

Les classes prédéfinies de caractère correspondent avec n'importe lequel d'un certain sous-ensemble de caractères.  Les classes suivantes sont déjà définies pour vous.

Classe

Signification

.

représente n'importe quel caractère

\w

tout caractère alphanumérique ou _

\W

tout caractère non alphanumérique

\d

tout caractère numérique (0-9)

\D

tout caractère non numérique

\s

tout espace blanc (espace, tabulation, retour chariot)

Vous pouvez aussi construire vos propres classes de caractères en entourant le groupe de caractères entre crochets "[]".  Les classes prédéfinies (excepté ".") peuvent être utilisées entre les crochets, et si un tiret "-" apparaît entre deux caractères, cela représente un intervalle.  Donc [a-z] représente toutes les lettres minuscules, et [a-zA-Z] représente les lettres minuscules et majuscules.  Pour inclure un "-" dans la classe, placez-le au début ou à la fin de la chaîne de caractères.

Si le premier caractère entre les crochets est un accent circonflexe "^", alors la classe représente tous les caractères excepté ceux qui sont spécifiés.  [^a-z] représente tous les caractères qui ne sont pas des caractères alphabétiques minuscules.

Métacaractères - Alternatives

En plaçant un "|" entre deux groupes d'éléments, des correspondances alternatives peuvent être représentées.  a|b correspondra à a ou b.  ab|cd correspondra à "ab" ou "cd", mais pas à "ac".  "|" regroupe les caractères à partir du délimiteur de la séquence ("(", "[" ou le début de la séquence) jusqu'à elle-même, et ensuite jusqu'à la fin de la séquence.  Des alternatives peuvent être placées entre parenthèses "()" pour faire en sorte que ce que l'on recherche soit évident, comme dans a(bc|de)f.  Les alternatives sont appariées de gauche à droite.  bey|beyond correspondra à bey, même si la chaîne de caractères est "beyond".

Métacaractères - Ancrage (Position)

Les métacaractères suivants contrôlent où la correspondance doit avoir lieu sur une ligne.  Note : \A et \Z correspondent  respectivement avec le début et la fin du texte, mais comme Beyond Compare exécute la recherche sur la base d'une ligne, ceux-ci ont le même effet que ^ et $.

Métacaractère

Signification

^

correspond uniquement avec le début de la ligne

$

correspond uniquement avec la fin de la ligne

Métacaractères - Répétitions

N'importe quoi dans une expression régulière peut être suivi par un métacaractère de répétition (opérateur itératif) qui s'applique à l'élément précédent.  Il y a deux types de répétition - gourmande ("greedy") ou non gourmande.  Les répétitions gourmandes correspondent avec autant de caractères qu'elles peuvent, les non-gourmandes avec aussi peu qu'elles peuvent.

Gourmande :

Métacaractère

Signification

*

désigne zéro ou plusieurs fois le caractère précédent (équivalent à {0,})

+

désigne une ou plusieurs fois le caractère précédent (équivalent à {1,})

?

désigne zéro ou une fois (équivalent à {0,1})

{n}

désigne exactement n fois (équivalent à {n,n})

{n,}

désigne n fois ou plus

{n,m}

désigne au moins n fois mais pas plus que m fois

Non gourmande :

Métacaractère

Signification

*?

désigne zéro ou plusieurs fois

+?

désigne une ou plusieurs fois

??

désigne zéro ou une fois

{n}?

désigne exactement n fois

{n,}?

désigne au moins n fois

{n,m}?

désigne au moins n fois mais pas plus que m fois

Métacaractères - Sous-expressions

Les parenthèses "()" peuvent également être utilisées pour grouper des caractères afin de les utiliser avec des itérations et des références arrières (discutées ci-dessous).  (bey){4,5} correspondra à 4 et à 5 fois les occurrences de "bey".  (abc|[0-9])* correspondra à n'importe quelle combinaison de "abc" et des chiffres de 0 à 9 (ex. "abc5", "679abc" et "abc77abc").

Métacaractères - Références arrières

Chaque séquence de caractères qui correspond dans un groupe "()" sera sauvegardée comme une sous-expression à laquelle vous pourrez vous référer plus tard avec \1 à \9, qui se réfèrent aux sous-expressions de gauche à droite.  b(.)\1n correspondra à "been" et à "boon", mais pas à "bean", ni à "ben" ou "beeen".

Modificateurs

Les modificateurs permettent de modifier le comportement de la correspondance à partir de ce point.  Si le modificateur est contenu dans une sous-expression, il affecte uniquement cette sous-expression.  Utilisez (?i) et (?-i) pour contrôler la sensibilité à la casse de la correspondance.

Exemples :

 (?i)Beyond Compare

correspond avec "Beyond Compare" et "beyond compare"

 (?i)Beyond (?-i)Compare

correspond avec "Beyond Compare" et "bEyOnD Compare", mais pas "beyond compare"

 

Voir également

Exemples d'expressions régulières