TR1 Regular Expressions
Cette rubrique traite des grammaire de les moteurs des expressions régulières que TR1 prend en charge.
Dans cette rubrique
Syntaxe d'expression régulière
résumé de grammaire
détails sémantiques
Faire correspondre et rechercher
Indicateurs de format
Syntaxe d'expression régulière
Élément
Un élément peut avoir l'une des actions suivantes :
Un caractère ordinaire qui correspond au même caractère dans la séquence cible.
un caractère générique « . » ce correspond à tout caractère dans la séquence cible à l'exception d'un saut de ligne.
Une expression entre crochets du formulaireexpr« [] », qui correspond à un caractère ou un élément de classement de la séquence cible qui est également dans le jeu a défini par l'expression expr, ou au format « [^expr] », qui correspond à un caractère ou un élément de classement de la séquence cible qui n'est pas dans le jeu a défini par l'expression expr.
L'expression expr peut contenir n'importe quelle combinaison des cas suivants :
Un caractère individuel.Ajoute ce caractère au jeu défini par expr.
Une plage de caractères au format « ch1-ch2 ».Ajoute des caractères qui sont représentés par des valeurs dans la plage fermée [ch1, ch2] au jeu défini par expr.
Une classe de caractères au format « [:name:] ».Ajoute les caractères de la classe nommée au jeu défini par expr.
une classe d'équivalence du formulaire « [=elt=] ».Ajoute les éléments s'assemblants qui sont équivalents à elt au jeu défini par expr.
Un symbole s'assemblage au format « [.elt.] ».Ajoute l'élément elt de classement au jeu défini par expr.
une ancre.L'ancre « ^ » correspond au début de la séquence cible ; l'ancre « $ » correspond à la fin de la séquence cible.
Un groupe de capture du formulaire « ( sous-expression ) », ou « \ ( sous-expression \) » dans BRE et grep, qui correspond à la séquence de caractères dans la séquence cible qui est mise en correspondance par le modèle entre les séparateurs.
- Une échappement d'identité de « de formulaire \k », qui correspond au caractère k dans la séquence cible.
Exemples :
« a » correspond à la séquence cible « a » mais ne correspond pas aux séquences cibles « B », « b », ou « c ».
« . » correspond à toute séquence cibles « a », « B », « b », et « c ».
« [le BZ] » correspond aux séquences cibles « b » et « c » mais ne correspond pas aux séquences cibles « a » ou « B ».
« [: inférieur :] » correspond aux séquences cibles « a », « b », et « c » mais ne correspond pas à la séquence cible « B ».
« () » correspond à la séquence cible « a » et les associés capturent le groupe 1 avec le sous-séquence « a », mais ne correspondent pas aux séquences cibles « B », « b », ou « c ».
Dans ECMAScript, BRE, et grep, un élément peut également être une référence arrière de « de formulaire \dd », où dd représente une valeur décimale N qui correspond à une séquence de caractères dans la séquence cible qui est identique à la séquence de caractères qui est mise en correspondance par le nème groupe de capture.Par exemple, « (a) \ 1 " correspond à la séquence cible « aa » car le premier (et uniquement) groupe de capture correspond à la séquence de démarrage « a » et ensuite \ 1 correspond à la séquence finale « a ».
Dans ECMAScript, un élément peut également être l'une des opérations suivantes :
Un groupe de non-capture au format « (? : sous-expression ) ».Correspond à la séquence de caractères dans la séquence cible qui est mise en correspondance par le modèle entre les séparateurs.
Une échappement limitée de format de fichier du « de formulaire \ f », « \ n », « \ r », « \ t », ou « \ v ».Elles correspondent à un saut de page, un saut de ligne, un retour chariot, une tabulation horizontale, et une tabulation verticale, respectivement, dans la séquence cible.
Une assertion positive sous la forme « (? = sous-expression ) ».Correspond à la séquence de caractères dans la séquence cible qui est mise en correspondance par le modèle entre les séparateurs, mais ne modifie pas la position de correspondance dans la séquence cible.
Une assertion négative au format « ? (!sous-expression ) ».Correspond à une séquence de caractères dans la séquence cible qui ne correspond pas au modèle entre les séparateurs, et ne modifie pas la position de correspondance dans la séquence cible.
une séquence d'échappement hexadécimale du « de formulaire \ xhh ».Correspond à un caractère de la séquence cible qui est représentée par les deux chiffres hexadécimaux hh.
Une séquence d'échappement unicode du « de formulaire \ uhhhh ».Correspond à un caractère de la séquence cible qui est représentée par les quatre chiffres hexadécimaux hhhh.
Une séquence d'échappement de contrôle de « de formulaire \ ck ».Correspond au caractère de contrôle nommé par le caractère k.
Une assertion limite de mot de « de formulaire \ b ».Correspond à lorsque la position actuelle dans la séquence cible est immédiatement après la limite d'un mot.
Une assertion négative limite de mot au format « \B ».Correspond à lorsque la position actuelle dans la séquence cible n'est pas immédiatement après une limite de mot.
Un caractère d'échappement de dsw au format « \d", "\D", "\s", "\S", "\w", "\W ».fournit un nom court pour une classe de caractères.
Exemples :
« (? : un) » correspond à la séquence cible « a », mais « (? : un) \ 1 " n'est pas valide parce qu'il n'y a aucun groupe 1 de capture.
« (? le =a) » correspond à la séquence cible « a ».L'assertion positive correspond à la séquence de démarrage « a » dans la séquence cible et la dernière « a » dans l'expression régulière correspond à la séquence de démarrage « a » dans la séquence cible.
« ? (! un) » ne correspond pas à la séquence cible « a ».
« a \ B. » correspond à la séquence cible « a~ », mais ne correspond pas à la séquence cible « ab ».
« \B ». correspond à la séquence cible « ab », mais ne correspond pas à la séquence cible « a~ ».
Dans awk, un élément peut également être l'une des opérations suivantes :
Une échappement de format de fichier \ de formulaire « \ », « \ », « \ b », « \ f », « \ n », « \ r », « \ t », ou « \ v ».Cela correspond à une barre oblique inverse, l'alertent, reculent, saut de page, saut de ligne, retour chariot, tabulation horizontale, et tabulation verticale, respectivement, dans la séquence cible.
Une séquence d'échappement octale de « de formulaire \ooo ».Correspond à un caractère de la séquence qui cible les performances est la valeur représentée par un, deux, ou trois chiffres octaux ooo.
répétition
Tout élément autre qu' une assertion positive, une assertion négative, ou une ancre peut être suivi par un nombre de répétition.Le type le plus général de nombre de répétition prend la forme « {min,max} », ou « \ {min,max\} » dans BRE et grep.Un élément qui est suivi par ce formulaire du nombre de répétition ne correspond au moins les occurrences consécutives d' min et pas plus que les occurrences consécutives d' max d'une séquence qui correspond à l'élément.Par exemple, « a {2,3} » correspond à la séquence cible « aa » et la séquence cible « aaa ". », mais pas la séquence cible « a » ou la séquence cible « aaaa ».
Un nombre de répétition peut également prendre l'une des formes suivantes :
« {min} », ou « \ {min\} » dans BRE et grep.équivalent à « {min,min} ».
« {min,} », ou « \ {, d'min\} » dans BRE et grep.équivalent à « {min, illimités} ».
"*".Équivalent à « {0,} » illimité.
Exemples :
« a {2} » correspond à la séquence cible « aa » mais pas la séquence cible « a » ou la séquence cible « aaa ". ».
« a {2,} » correspond à la séquence cible « aa », la séquence cible « aaa ". », etc., mais ne correspond pas à la séquence cible « a ».
« a* » correspond à "" cible de séquence, la séquence cible « a », la séquence cible « aa », et ainsi de suite.
Pour toutes les grammaire sauf BRE et grep, un nombre à répétition peut également prendre l'une des formes suivantes :
« ? ».équivalent à « {0,1} ».
« + ».Équivalent à « {1,} » illimité.
Exemples :
« a » ? correspond à "" cible de séquence et la séquence cible « a », mais pas la séquence cible « aa ».
« a+ » correspond à la séquence cible « a », la séquence cible « aa », etc., mais pas "" cible de séquence.
Dans ECMAScript, tous les formulaires du nombre de répétition peuvent être suivies par le caractère « ? », qui indique une répétition non-gourmande.
Concaténation
les éléments d'expression régulière, avec ou sans la répétition compte, peut être concaténés pour former de plus longues expressions régulières.L'expression obtenue correspond à une séquence cible qui est une concaténation des séquences qui sont mises en correspondance par les éléments individuels.Par exemple, « a {2,3} b » correspond à la séquence cible « aab » et la séquence cible « aaab », mais ne correspond pas à la séquence cible « ab » ou la séquence cible « aaaab ».
Alternative
Dans toutes les grammaire d'expression régulière sauf BRE et grep, une expression régulière concaténée peut être suivie par le caractère « | » et une autre expression régulière concaténée.Un certain nombre d'expressions régulières concaténées peuvent être combinées de cette manière.L'expression obtenue correspond à toute séquence cible qui correspond à un ou plusieurs expressions régulières concaténées.
Si plusieurs expressions régulières concaténées correspond à la séquence cible, ECMAScript sélectionne la première des expressions régulières concaténées qui correspond à la séquence comme une correspondance (première correspondance) ; les autres grammaire d'expression régulière sélectionnez celui qui exécute la correspondance la plus longue.par exemple, « ab|le CD » correspond à la séquence cible « ab » et la séquence cible « CD », mais ne correspond pas à la séquence cible « abd » ou la séquence cible « ACD ».
Dans grep et egrep, un caractère de saut de ligne (" \ n ") pour séparer les méthodes.
sous-expression
dans BRE et grep, une sous-expression est une concaténation.Dans les autres grammaire d'expression régulière, une sous-expression est une alternative.
résumé de grammaire
Le tableau suivant répertorie les fonctionnalités disponibles dans les différentes grammaire d'expression régulière fournies par TR1 :
Élément |
BRE |
AVANT |
Anglais) |
grep |
egrep |
awk |
---|---|---|---|---|---|---|
alternative à l'aide de « | » |
+ |
+ |
+ |
+ |
||
alternative à « \ n » |
+ |
+ |
||||
ancrage |
+ |
+ |
+ |
+ |
+ |
+ |
référence arrière |
+ |
+ |
+ |
|||
expression entre crochets |
+ |
+ |
+ |
+ |
+ |
+ |
groupe de capture de l'utilisation de « () » |
+ |
+ |
+ |
+ |
||
groupe de capture vous utilisez « \ (\) » |
+ |
+ |
||||
séquence d'échappement de contrôle |
+ |
|||||
caractère d'échappement de dsw |
+ |
|||||
échappement de format de fichier |
+ |
+ |
||||
séquence d'échappement hexadécimale |
+ |
|||||
échappement d'identité |
+ |
+ |
+ |
+ |
+ |
+ |
assertion négative |
+ |
|||||
assertion négative limite de mot |
+ |
|||||
groupe de non-capture |
+ |
|||||
répétition non-gourmande |
+ |
|||||
séquence d'échappement octale |
+ |
|||||
caractère ordinaire |
+ |
+ |
+ |
+ |
+ |
+ |
assertion positive |
+ |
|||||
répétition à « {} » |
+ |
+ |
+ |
+ |
||
répétition à « \ \ {} » |
+ |
+ |
||||
répétition à « * » |
+ |
+ |
+ |
+ |
+ |
+ |
répétition à « ? » et « + » |
+ |
+ |
+ |
+ |
||
séquence d'échappement unicode |
+ |
|||||
caractère générique |
+ |
+ |
+ |
+ |
+ |
+ |
assertion limite de mot |
+ |
détails sémantiques
Ancre
Une ancre correspond à une position dans la chaîne cible, pas un caractère.Un « ^ » correspond au début de la chaîne cible, et un « $ » correspond à la fin de la chaîne cible.
référence arrière
Une référence arrière est une barre oblique inverse suivi d'une valeur décimale N.Elle correspond au contenu du nième groupe de capture.La valeur de N ne doit pas être supérieur au nombre de groupes de capture qui précèdent la référence arrière.dans BRE et grep, la valeur de N est déterminée par le chiffre décimal qui suit la barre oblique inverse.dans ECMAScript, la valeur de N est déterminée par tous les chiffres décimaux qui suivent immédiatement la barre oblique inverse.Par conséquent, dans BRE et grep, la valeur de N n'est jamais supérieures à 9, même si l'expression régulière a plus de neuf groupes de capture.dans ECMAScript, la valeur de N est illimitée.
Exemples :
« ((a+) (b+))(c+ \ 3 " correspond à la séquence cible « l'aabbbcbbb ».« De référence arrière \ 3 " correspond au texte au troisième groupe de capture, c. autrement dit., « (b+) ».Il ne correspond pas à la séquence cible « aabbbcbb ».
« (a) \ 2 " n'est pas valide.
« (b ((((((((())))))))))\ 10 " a des significations différentes dans BRE et dans ECMAScript.dans BRE la référence arrière est « \ 1".La référence arrière correspond au contenu du premier groupe de capture (autrement dit, celui pour lequel commence par « (b » et se termine avec la dernière ") » et précède la référence arrière), et « 0 " final correspond au caractère ordinaire « 0 ".dans ECMAScript, la référence arrière est « \ 10".Il concurrence le dixième groupe de capture, c. autrement dit., le le plus profond.
Expression entre crochets
Une expression entre crochets définit un jeu de caractères et les éléments de classement.Lorsque l'expression entre crochets commence par le caractère « ^ » la correspondance réussit si aucun éléments dans la correspondance définie que le caractère actuel dans la cible une séquence.Sinon, la correspondance réussit si l'un des éléments dans le jeu correspondent au caractère actuel dans la séquence cible.
Le jeu de caractères peut être définie en répertoriant n'importe quelle combinaison de caractères individuels, les plages de caractères, de classes de caractères, d'équivalence, et d'assembler des symboles.
groupe de capture
Marques de groupe de capture son contenu comme une seule unité dans la syntaxe et les noms d'expression régulière le texte cible qui correspond à son contenu.Le nom associé à chaque groupe de capture est un nombre, qui est déterminé en comptant les parenthèses ouvrante qui marquent les groupes de capture jusqu'à la parenthèse ouvrante qui marque le groupe actuel de capture.dans cette implémentation, le nombre maximal de groupes de capture a 31 ans.
Exemples :
« ab+ » correspond à la séquence cible « abb », mais ne correspond pas à la séquence cible « abab ».
« ab () + » ne correspond pas à la séquence cible « abb », mais les correspondances la séquence cible « abab ».
« ((a+) (b+))(c+) » correspond à la séquence cible « aabbbc » et les associés capturent le groupe 1 avec le sous-séquence « aabbb », capturent le groupe 2 avec le sous-séquence « aa », capturent le groupe 3 avec « bbb », et capturent le groupe 4 avec le sous-séquence « c ».
classe de caractères
Une classe de caractères dans une expression entre crochets ajoute tous les caractères de la classe nommée au jeu de caractères qui est défini par l'expression entre crochets.Pour créer une classe de caractères, utilisez « [: » suivi du nom de la classe suivi par « :] ».En interne, les noms de classes de caractères sont identifiés en appelant id = traits.lookup_classname.Un caractère ch appartient à une telle classe si traits.isctype(ch, id) retourne la valeur true.Le modèle d' regex_traits par défaut prend en charge les noms de classes dans le tableau suivant.
Nom de la classe |
Description |
---|---|
« alnum » |
minuscules, majuscules, et chiffres |
« alpha » |
minuscules et lettres majuscules |
le « espacenoms » |
l'espace ou une tabulation |
« order » |
les caractères d'échappement de format de fichier |
« chiffre » |
chiffres |
« graphique » |
minuscules, majuscules, chiffres, et ponctuation |
« inférieur » |
minuscules |
« copie » |
minuscules, majuscules, chiffres, ponctuation, et espace |
« punct » |
ponctuation |
le « espacenoms » |
l'espace |
« haut |
majuscules |
« xdigit » |
chiffres, « a », « b », « m », « d », « e », « f », « A », « B », « M », « D », « E », « F » |
"d" |
mêmes que le chiffre |
"s" |
identique à l'espace |
"w" |
identique à l'alnum |
plage de caractères
Une plage de caractères dans une expression entre crochets ajoute tous les caractères de la plage au jeu de caractères qui est défini par l'expression entre crochets.Pour créer une plage de caractères, placez le caractère « - » entre les premier et dernier caractères de la plage.Cela met en jeu tous les caractères qui ont une valeur numérique qui est plus que ou égale à la valeur numérique du premier caractère, et inférieure ou égale à la valeur numérique du dernier caractère.Notez que cet ensemble de caractères ajoutés dépend de la représentation spécifique à la plateforme de caractères.Si le caractère « - » apparaît au début ou la fin d'une expression entre crochets, ou comme premier ou le dernier caractère d'une plage de caractères, elle se représente.
Exemples :
« [0-7] » représente le jeu de caractères {« 0 ", « 1 ", « 2 ", « 3 ", « 4 ", « 5 ", « 6 ", « 7 "}.Il correspond aux séquences cibles « 0 ", « 1 ", etc., mais pas « a ».
Sur les systèmes qui utilisent l'encodage de caractères ASCII, « [le HK] » représente le jeu de caractères {« h », « i », « j », « k »}.Il correspond aux séquences cibles « h », « i », etc., mais pas « \x8A » ou « 0 ".
Sur les systèmes qui utilisent l'encodage de caractères d'EBCDIC, « [le HK] » représente le jeu de caractères {« h », « i », « \x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F », « \ x90 », « j », « k »} (" h » est encodé comme 0x88 et « k » est encodé au 0x92).Il correspond aux séquences cibles « h », « i », « \x8A », etc., mais pas « 0 ".
« [- 0-24] » représente le jeu de caractères {« - », « 0 ", « 1 ", « 2 ", « 4 "}.
« [0-2-] » représente le jeu de caractères {« 0 ", « 1 ", « 2 ", « - »}.
Sur les systèmes qui utilisent l'encodage de caractères ASCII, « [+--] » représente le jeu de caractères {« + », « , », « - »}.
Toutefois, lorsque les plages paramètres régionaux sont utilisées, les caractères dans une plage sont déterminés par les règles de classement pour les paramètres régionaux.Les caractères qui s'assemblent après le premier caractère de la définition de la plage et avant que le dernier caractère dans la définition de la plage se trouvent dans le jeu.Les deux caractères de fin sont également dans le jeu.
assembler l'élément
Un élément en assemblant est une séquence de caractères qui est traitée comme un caractère unique.
assembler le symbole
Un symbole s'assemblage dans une expression entre crochets ajoute un élément en assemblant au jeu défini par l'expression entre crochets.Pour créer un symbole s'assemblage, utilisez « [ ». suivi de l'élément en assemblant suivi de « .] ».
séquence d'échappement de contrôle
Une séquence d'échappement de contrôle est une barre oblique inverse suivi de la lettre « c » suivi de l'une des lettres » à « z » ou « A » à « Z ».Il correspond au caractère de contrôle ASCII nommé par cette lettre.Par exemple, « \ CI » correspond à « cible de séquence \ x09 », <ctrl-i> car a la valeur 0x09.
caractère d'échappement de DSW
Un caractère d'échappement de dsw est un nom court pour une classe de caractères, comme indiqué dans le tableau suivant.
séquence d'échappement |
Classe nommée équivalente |
Valeur par défaut Classe nommée |
---|---|---|
« \ d » |
« [[: d :]] » |
« [[: chiffre :]] » |
« \D » |
« [^ [: d :]] » |
« [^ [: chiffre :]] » |
« \ s » |
« [[: s] :] » |
« [[: l'espace :]] » |
« \S » |
« [^ [: s] :] » |
« [^ [: l'espace :]] » |
« \ W » |
« [[: W :]] » |
« [a-zA-Z0-9_] * « |
« \W » |
« [^ [: W :]] » |
« [^a-zA-Z0-9_] * « |
jeu de caractères de *ASCII
classe d'équivalence
Une classe d'équivalence dans une expression entre crochets ajoute tous les caractères et les éléments de classement qui sont équivalents à l'élément en assemblant dans la définition de classe d'équivalence au jeu défini par l'expression entre crochets.Pour créer une classe d'équivalence, utilisez « [= » suivi d'un élément en assemblant suivi de « =] ».en interne, deux éléments s'assemblants elt1 et elt2 sont équivalents si traits.transform_primary(elt1.begin(), elt1.end()) == traits.transform_primary(elt2.begin(), elt2.end()).
Échappement de format de fichier
Une échappement de format de fichier comprend des séquences habituelles de caractère d'échappement de langage C, « \\", "\a", "\b", "\f", "\n", "\r", "\t", "\v".These ont les significations habituelles, c. autrement dit., barre oblique inverse, alerte, retour arrière, saut de page, saut de ligne, retour chariot, tabulation horizontale, et tabulation verticale, respectivement.Dans ECMAScript, ne sont pas autorisés « \ » et « \ b ».(" est autorisé \ \ », mais il s'agit d'échappement d'identité, pas d'échappement de format de fichier).
séquence d'échappement hexadécimale
Une séquence d'échappement hexadécimale est une barre oblique inverse suivie de la lettre « x » suivi de deux chiffres hexadécimaux (0-9a-fA-F).Elle correspond à un caractère de la séquence cible qui a la valeur qui est spécifiée par les deux chiffres.Par exemple, « encodage de caractères de \x41" matches the target sequence "A" when ASCII est utilisé.
Échappement d'identité
Une échappement d'identité est une barre oblique inverse suivi d'un caractère unique.Il correspond à ce caractère.Cela est requis lorsque le caractère a une signification particulière ; à l'aide de l'échappement d'identité, un ordre particulier est supprimé.Par exemple :
« a* » correspond à la séquence cible « aaa ". », mais ne correspond pas à la séquence cible « a* ».
« a \ * » ne correspond pas à la séquence cible « aaa ". », mais les correspondances la séquence cible « a* ».
Le jeu de caractères autorisés dans une échappement d'identité dépend de la syntaxe d'expression régulière, comme indiqué dans le tableau suivant.
Grammaire |
Caractères d'échappement autorisé d'identité |
---|---|
BRE, grep |
{ '(', ')', '{', '}', '.', '[', '\', '*', '^', '$' } |
ERE, egre |
{ '(', ')', '{', '.', '[', '\', '*', '^', '$', '+', '?', '|' } |
awk |
ERE plus {« » », « / »} |
ECMAScript |
Tous les caractères autres que ces qui peuvent faire partie d'un identificateur.En général, cela inclut des lettres, des chiffres, « $ », « _ », et les séquences d'échappement unicode.Pour plus d'informations, consultez la spécification du langage ECMAScript. |
Caractère individuel
Un caractère individuel dans une expression entre crochets ajoute ce caractère au jeu de caractères qui est défini par l'expression entre crochets.N'importe où dans une expression entre crochets sauf au début, un « ^ » fait représente.
Exemples :
ABC « [] » correspond aux séquences cibles « a », « b », et « c », mais pas la séquence « d ».
« [^abc] » correspond à la séquence cible « d », mais pas la cible ordonnance « a », « b », ou « c ».
« [a^bc] » correspond aux séquences cibles « a », « b », « c », et « ^ », mais pas la séquence cible « d ».
Dans toutes les grammaire d'expression régulière à l'exception ECMAScript, si « ] » est le premier caractère qui suit l'ouverture « [ » ou est le premier caractère qui suit un premier « ^ », il se représente.
Exemples :
« [] » n'est pas valide car il existe aucun « ] » pour terminer l'expression entre crochets.
« [] ABC l'] » correspond aux séquences cibles « a », « b », « c », et « ] », mais pas la séquence cible « d ».
« ^ [] ABC l'] » correspond à la séquence cible « d », mais pas la cible ordonnance « a », « b », « c », ou « ] ».
Dans ECMAScript, utilisez « \] » pour représenter le caractère « ] » dans une expression entre crochets.
Exemples :
« [] » correspond à la séquence cible « a » car l'expression entre crochets est vide.
« [\] ABC l'] » correspond aux séquences cibles « a », « b », « c », et « ] » mais pas la séquence cible « d ».
assertion négative
Une assertion négative correspond à une valeur mais son contenu.Elle ne consomme aucun caractère dans la séquence cible.Par exemple, « ? (! AA) (a*) » correspond à la séquence cible « a » et les associés capturent le groupe 1 avec le sous-séquence « a ».Elle ne correspond pas à la séquence cible « aa » ou la séquence cible « aaa ". ».
assertion négative limite de mot
Une assertion négative limite de mot correspond si la position actuelle dans la chaîne cible n'est pas immédiatement après une limite de mot.
groupe de Non-capture
Les marques de groupe d'une non-capture son contenu comme une seule unité dans la syntaxe d'expression régulière, mais n'identifie pas le texte cible.par exemple, « (a) (? : b) * (c) correspond au texte cible « abbc » et les associés capturent le groupe 1 avec le sous-séquence « a » et capturent le groupe 2 avec le sous-séquence « c ».
répétition Non-gourmande
Une répétition non-gourmande utilise le sous-séquence le plus court de la séquence cible qui correspond au modèle.une répétition gourmande consomme le plus long.par exemple, « (a+) (l'a*b) » correspond à la séquence cible « aaab ».Lorsqu'une répétition non-gourmande est utilisée, elle associe le groupe de capture 1 avec le sous-séquence « a » au début de la séquence et de groupe 2 cibles de capture avec le sous-séquence « aab » à la fin de la séquence cible.Lorsqu'une correspondance gourmande est utilisée, elle associe le groupe de capture 1 avec le sous-séquence « aaa ". » et le groupe de capture 2 avec le sous-séquence « b ».
séquence d'échappement octale
Une séquence d'échappement octale est une barre oblique suivie d'un, deux, ou trois chiffres octaux (0-7).Elle correspond à un caractère de la séquence cible qui a la valeur qui est spécifiée par ces chiffres.si tous les chiffres sont « 0", la séquence est valide.Par exemple, « encodage de caractères de \101" matches the target sequence "A" when ASCII est utilisé.
Caractère ordinaire
Un caractère ordinaire est un caractère valide qui n'a pas une signification spéciale dans la syntaxe actuelle.
Dans ECMAScript, les caractères suivants ont des significations spéciales :
- ^ $ \ .* + ?( ) [ ] { } |
Dans BRE et grep, les caractères suivants ont des significations spéciales :
- .[ \
Également dans BRE et grep, les caractères suivants ont des significations particulières lorsqu'ils sont utilisés dans un contexte particulier :
« * » a une signification spéciale dans tous les cas sauf si c'est le premier caractère dans une expression régulière ou le premier caractère qui suit un premier « ^ » dans une expression régulière, ou lorsque c'est le premier caractère d'un groupe de capture ou le premier caractère qui suit un premier « ^ » à un groupe de capture.
« ^ » a une signification particulière lorsque c'est le premier caractère d'une expression régulière.
« $ » a une signification particulière lorsque c'est le dernier caractère d'une expression régulière.
Dans ERE, egrep, et awk, les caractères suivants ont des significations spéciales :
- .[ \ ( * + ?{ |
Également dans ERE, egrep, et awk, les caractères suivants ont des significations particulières lorsqu'ils sont utilisés dans un contexte particulier.
") » a une signification spéciale lorsqu'il correspond à précéder « (".
« ^ » a une signification particulière lorsque c'est le premier caractère d'une expression régulière.
« $ » a une signification particulière lorsque c'est le dernier caractère d'une expression régulière.
Un caractère ordinaire correspond au même caractère dans la séquence cible.Par défaut, cela signifie que la correspondance réussit si les deux caractères sont représentés par la même valeur.Dans une correspondance respecte la casse, deux caractères ch0 et ch1 éléments concordent si traits.translate_nocase(ch0) == traits.translate_nocase(ch1).Dans une correspondance paramètres régionaux, deux caractères ch0 et ch1 éléments concordent si traits.translate(ch0) == traits.translate(ch1).
assertion positive
Une assertion positive correspond à son contenu, mais ne consomme aucun caractère dans la séquence cible.
Exemples :
« (? le =aa) (a*) » correspond à la séquence cible « aaaa » et les associés capturent le groupe 1 avec le sous-séquence « aaaa ».
« AA (a*) » correspond à la séquence cible « aaaa » et 1 groupe de capture d'associés au sous-séquence « aa » au début de la séquence et de groupe 2 cibles de capture avec le sous-séquence « aa » à la fin de la séquence cible.
« (? =aa) ()|(a) positif » concurrence la séquence cible « a » et le groupe 1 de capture d'associés à une séquence vide (parce que l'assertion a échoué) et le groupe de capture 2 avec le sous-séquence « a ».Elle correspond également à la séquence cible « aa » et les associés capturent le groupe 1 avec le sous-séquence « aa » et capturent le groupe 2 avec une séquence vide.
Séquence d'échappement Unicode
Une séquence d'échappement unicode est une barre oblique inverse suivie de la lettre « u » suivie de quatre chiffres hexadécimaux (0-9a-fA-F).Elle correspond à un caractère de la séquence cible qui a la valeur qui est spécifiée par les quatre chiffres.Par exemple, « encodage de caractères de \u0041" matches the target sequence "A" when ASCII est utilisé.
caractère générique
Un caractère générique correspond à tout caractère de l'expression cible à l'exception d'un saut de ligne.
limite de mot
une limite de mot se produit dans les situations suivantes :
Le caractère actuel est au début de la séquence cible et est l'un des caractères alphabétiques A-Za-z0-9_.
La position actuelle d'impression est au delà de la fin de la séquence cible et le dernier caractère de la séquence cible est l'un des caractères alphabétiques.
Le caractère actuel est l'un des caractères alphabétiques et le caractère précédent n'est pas.
Le caractère actuel n'est pas l'un des caractères alphabétiques et le caractère précédent est.
assertion limite de mot
Une assertion limite de mot correspond lorsque la position actuelle dans la chaîne cible est immédiatement après la limite d'un mot.
Faire correspondre et rechercher
Pour qu'une expression régulière correspond à une séquence cible, l'expression régulière entière doit correspondre à la séquence cible entière.Par exemple, l'expression régulière « BCD » correspond à la séquence cible « BCD » mais ne correspond pas à la séquence cible « abcd » ni la séquence cible « bcde ».
Pour qu'une recherche d'expression régulière réussisse, il doit exister un sous-séquence quelque part dans la séquence cible qui correspond à l'expression régulière.La recherche recherche en général le sous-séquence correspondant à gauche.
Exemples :
Une recherche de l'expression régulière « BCD » dans la séquence cible « BCD » réussit et correspond à la séquence entière.La même recherche dans la séquence cible « abcd » également réussit et correspond aux trois derniers caractères.La même recherche dans la séquence cible « bcde » également réussit et correspond aux trois premiers caractères.
Une recherche de l'expression régulière « BCD » dans la séquence cible « bcdbcd » réussit et correspond aux trois premiers caractères.
S'il y a de plusieurs sous-séquence qui correspond à un certain emplacement dans la séquence cible, il existe deux façons de choisir le modèle correspondant.La première correspondance choisit le sous-séquence trouvé d'abord lorsque l'expression régulière est mise en correspondance.La correspondance la plus longue choisit le plus long sous-séquence de celui qui correspondent à cet emplacement.S'il y a de plusieurs sous-séquence qui a une longueur maximale, la correspondance la plus longue choisit celui qui a été trouvé en premier.Par exemple, lorsque la première correspondance est utilisée, la recherche de l'expression régulière « b|Bc » dans la séquence cible « abcd » correspond au sous-séquence « b » parce que le terme gauche de l'alternative correspond à ce sous-séquence ; par conséquent, la première correspondance n'essaie pas le terme droit de l'alternative.Lorsque la correspondance la plus longue est utilisée, la même recherche une correspondance est établie avec « Bc » car « Bc » est plus long que « b ».
Une correspondance partielle réussit si la correspondance atteint la fin de la séquence cible sans échec, même si elle n'a pas atteint la fin d'une expression régulière.Par conséquent, une fois la correspondance partielle réussisse, ajouter des caractères à la séquence cible peut provoquer une correspondance partielle ultérieure à l'échec.Toutefois, une fois la correspondance partielle échoue, ajouter des caractères à la séquence cible ne peut pas faire réussir une correspondance partielle ultérieure.Par exemple, avec une correspondance partielle, « ab » correspond à la séquence cible « a » mais pas « a-c ».
Indicateurs de format
Règles de format ECMAScript |
règles de format de sed |
Texte de remplacement |
---|---|---|
« $&» |
"&" |
La séquence de caractères qui correspond à l'expression régulière entier ([match[0].first, match[0].second)) |
« $$ » |
« $ » |
|
|
« \&» |
"&" |
« `$ » (signe dollar suivi d'apostrophe inverse) |
|
la séquence de caractères qui précède le sous-séquence qui correspond à l'expression régulière ([match.prefix().first, match.prefix().second)) |
« $ ' » (signe dollar suivi de guillemet en avant) |
|
la séquence de caractères qui suit le sous-séquence qui correspond à l'expression régulière ([match.suffix().first, match.suffix().second)) |
« ccn » |
« \ n » |
La séquence de caractères qui concurrence le groupe de capture à la position n, où n est un nombre entre 0 et 9 ([match[n].first, match[n].second) |
|
« \ \ n » |
« \ n » |
« $nn » |
|
La séquence de caractères qui concurrence le groupe de capture à la position nn, où nn est un nombre entre 10 et 99 ([match[nn].first, match[nn].second) |