Les constructions spéciales fournissent des moyens de mise en correspondance conditionnelle (lookahead et lookbehind ou plus généralement zero-width assertions).
Littéralement, grâce aux constructions lookahead et lookbehind, il est possible de vérifier devant et derrière un critère qui permettra de trouver une occurrence qui correspond à une expression régulière.
#Recherche après le caractère :
Expression régulière : (?<=:)([\w\-\.]+@\w+\.[a-z]{2,4}|.+)
Cible :
From: expediteur@email.com
To: destinataire@email.com
Subject: Bonjour...
#Recherche incluant le caractère :
Expression régulière : (?=:)([\w\-\.]+@\w+\.[a-z]{2,4}|.+)
Cible :
From: expediteur@email.com
To: destinataire@email.com
Subject: Bonjour...
#Recherche d'une occurrence dont le début n'est pas un caractère :
Expression régulière : (?!:)([\w\-\.]+@\w+\.[a-z]{2,4}|.+)
Cible :
From: expediteur@email.com
To: destinataire@email.com
Subject: Bonjour...
#Recherche devant le caractère : en l'excluant
Expression régulière : ^.+(?=:)
Cible :
From: expediteur@email.com
To: destinataire@email.com
Subject: Bonjour...
#Recherche devant le caractère : en l'incluant
Expression régulière : ^.+(?<=:)
Cible :
From: expediteur@email.com
To: destinataire@email.com
Subject: Bonjour...
#Recherche devant le caractère : en l'incluant
Expression régulière : ^.+(?>:)
Cible :
From: expediteur@email.com
To: destinataire@email.com
Subject: Bonjour...
#Recherche d'une occurrence dont le début n'est pas un caractère :
Expression régulière : (?<!:)([\w\-\.]+@\w+\.[a-z]{2,4}|.+)
Cible :
From: expediteur@email.com
To: destinataire@email.com
Subject: Bonjour...
#Recherche d'une occurrence dont la fin n'est pas 'S' ou 'ES'
et peut être E mais en l'excluant :
Expression régulière : SAINT(?=E?)(?!E?S)
Cible :
SAINT
SAINTE
SAINTS
SAINTES
#Recherche d'une occurrence dont la fin peut être E mais en
l'excluant. En son sein, il ne peut y avoir 'A' ou 'RA' et il peut inclure
un 'D' s'il existe :
Expression régulière : \bGR?(?!R?A)N?(?>D?)(?=E?)
Cible :
GRD
GD
GND
GDE
GRNDE
GRAND
GRANDE
AGDE
| Symboles | Description |
|---|---|
| (?options) | Expression ne devant pas être prise pour un groupe de capture exprimant des options d'expression régulière. Les options peuvvent être accolées ensemble (ex.: (?is)) ou des groupes d'options peuvent se succéder (ex.: (?i)(?s)). |
| (?:regexp) | Expression ne devant pas être prise pour un groupe de capture. |
| (?idmsux-idmsux) | Activation ou désactivation des options de recherche. |
| (?idmsux-idmsux:regexp) | Activation ou désactivation des options pour l'expression ne devant pas être prise pour un groupe de capture. |
| (?=regexp)X | Recherche d'une occurrence correspondant à l'expression X, qui doit suivre une occurrence correspondant à la construction spéciale. Cette dernière occurrence est incluse dans la première (zero-width positive lookahead). |
| X(?=regexp) | Recherche d'une occurrence correspondant à l'expression X, qui doit précéder une occurrence correspondant à la construction spéciale. Cette dernière occurrence n'est pas incluse dans la première (zero-width positive lookahead). |
| (?!regexp)X | Recherche d'une occurrence correspondant à l'expression X, qui ne doit pas suivre une occurrence correspondant à la construction spéciale (zero-width negative lookahead). |
| X(?!regexp) | Recherche d'une occurrence correspondant à l'expression X, qui ne doit pas précéder une occurrence correspondant à la construction spéciale (zero-width negative lookahead). |
| (?<=regexp)X | Recherche d'une occurrence correspondant à l'expression X, qui doit suivre une occurrence correspondant à la construction spéciale. Cette dernière occurrence n'est pas incluse dans la première (zero-width positive lookbehind). |
| X(?<=regexp) | Recherche d'une occurrence correspondant à l'expression X, qui doit précéder une occurrence correspondant à la construction spéciale. Cette dernière occurrence est incluse dans la première (zero-width positive lookbehind). |
| (?<!regexp)X | Recherche d'une occurrence correspondant à l'expression X, qui ne doit pas suivre une occurrence correspondant à la construction spéciale (zero-width negative lookbehind). |
| X(?<!regexp) | Recherche d'une occurrence correspondant à l'expression X, qui ne doit pas suivre une occurrence correspondant à la construction spéciale (zero-width negative lookbehind). |
| X(?>regexp) | Recherche d'une occurrence correspondant à l'expression X, qui doit précéder une occurrence correspondant à la construction spéciale. Cette dernière occurrence est incluse dans la première. |
| (?>regexp)X | Recherche d'une occurrence correspondant à l'expression X, qui doit suivre une occurrence correspondant à la construction spéciale. Cette dernière occurrence est incluse dans la première. |