Parfois, je ne sais pas combien de personnages correspondent. Pour pouvoir s'adapter à cette incertitude, les expressions régulières soutiennent le concept de qualifications. Ces qualifications peuvent spécifier combien de fois un composant donné d'une expression régulière doit apparaître avant que le match puisse être rempli.
Le tableau suivant donne une explication des différents qualifications et de leur signification:
personnage | décrire |
---|---|
* | Correspond à la sous-expression précédente zéro ou plusieurs fois. Par exemple, ZO * peut correspondre à Z et Zoo. * équivaut à {0,}. |
+ | Correspond à la sous-expression précédente une fois ou plus. Par exemple, «ZO +» peut correspondre à ZO et ZOO, mais pas z. + équivaut à {1,}. |
? | Correspond à la sous-expression précédente zéro ou une fois. Par exemple, faire (es)? ? Équivalent à {0,1}. |
{ n } | n est un entier non négatif. Faites correspondre les n fois déterminés. Par exemple, 'o {2}' ne peut pas correspondre à "O 'dans Bob, mais peut correspondre à deux OS dans la nourriture. |
{ n ,} | n est un entier non négatif. Faites correspondre au moins n fois. Par exemple, 'o {2,}' ne peut pas correspondre à "O 'dans Bob, mais peut correspondre à tous les OS dans Foooood. 'o {1,}' équivaut à «o +». 'o {0,}' équivaut à «o *». |
{ n , m } | M et n sont des entiers non négatifs, où n <= m . Faites correspondre au moins n fois et assortiz jusqu'à M fois. Liu, o {1,3} correspondra aux trois premiers OS à Fooooood. 'o {0,1}' équivaut à «o?». Veuillez noter qu'il ne peut pas y avoir d'espaces entre les virgules et deux nombres. |
Pour un grand document d'entrée, le nombre de chapitres peut facilement dépasser neuf chapitres, il existe donc un moyen de gérer les numéros de chapitre à deux chiffres ou à trois chiffres. Le qualificatif fournit cette fonction. L'expression régulière JScript suivante peut correspondre au titre du chapitre avec n'importe quel nombre de bits:
/Chapter [1-9][0-9]*/
L'expression régulière VBScript suivante effectue la même correspondance:
Chapter [1-9][0-9]*
Notez que les qualifications apparaissent après l'expression de la plage. Par conséquent, il sera appliqué à toute l'expression de la plage contenue, dans ce cas, seuls les nombres de 0 à 9 sont spécifiés.
Le qualificatif «+» n'est pas utilisé ici, car un nombre n'est pas nécessairement requis à la deuxième position ou ultérieure. Le caractère non aussi '?' Est utilisé, car cela limitera le nombre de chapitres à seulement deux chiffres. Au moins un nombre doit être égalé après le «chapitre» et les caractères de l'espace.
Si la limite de chapitre est connue pour être de 99 chapitres, vous pouvez utiliser l'expression JScript suivante pour spécifier au moins un nombre, mais pas plus de deux nombres.
/Chapter [0-9]{1,2}/
Pour VBScript, les expressions régulières suivantes peuvent être utilisées:
Chapter [0-9]{1,2}
L'inconvénient de l'expression ci-dessus est que s'il y a un numéro de chapitre supérieur à 99, il ne correspondra toujours aux deux premiers chiffres. Un autre inconvénient est que certaines personnes peuvent créer un chapitre 0 et correspondre toujours. Une meilleure expression JScript pour correspondre à un numéro à deux chiffres est la suivante:
/Chapter [1-9][0-9]?/
ou
/Chapter [1-9][0-9]{0,1}/
Pour VBScript, l'expression suivante est équivalente à ce qui précède:
Chapter [1-9][0-9]?
ou
Chapter [1-9][0-9]{0,1}
Les « *
» , « +'
et « ?'
Parfois, ce n'est pas du tout ce que vous voulez. Parfois, il se trouve que ce soit le plus petit match.
Par exemple, vous souhaiterez peut-être rechercher un document HTML pour trouver un titre de chapitre inclus dans la balise H1. Dans un document, le texte peut avoir le formulaire suivant:
<H1>Chapter 1 – Introduction to Regular Expressions</H1>
L'expression suivante correspond à tout depuis le début moins que le signe (<) à la fin du marqueur H1.
/<.*>/
L'expression régulière de VBScript est:
<.*>
Si ce qui doit être apparié est la balise H1 de démarrage, les expressions non grevées suivantes ne correspondent qu'en <H1>.
/<.*?>/
ou
<.*?>
En plaçant «?» Après les qualifications «*», «+» ou «?»
Jusqu'à présent, les exemples observés envisagent uniquement de trouver des titres de chapitre qui apparaissent n'importe où. Tout «chapitre» de chaîne qui apparaît suivi d'un espace et d'un numéro peut être un véritable titre de chapitre ou une référence croisée à d'autres chapitres. Étant donné que le titre de chapitre réel apparaît toujours au début d'une ligne, il est nécessaire de concevoir une méthode pour rechercher uniquement le titre et non la référence croisée.
Les localisateurs fournissent cette fonction. Un localisateur peut réparer une expression régulière au début ou à la fin d'une ligne. Vous pouvez également créer des expressions régulières qui n'apparaissent que dans les mots ou uniquement au début ou à la fin d'un mot. Le tableau suivant contient une liste d'expressions régulières et leur signification:
personnage | décrire |
---|---|
^ | Correspond à la position de début de la chaîne d'entrée. Si la propriété multiline de l'objet Regexp est définie, ^ correspond également à la position après '/ n' ou '/ r'. |
$ | Correspond à la position finale de la chaîne d'entrée. Si la propriété multiline de l'objet Regexp est définie, $ correspond également à la position avant '/ n' ou '/ r'. |
/ b | Faites correspondre une limite de mot, ce qui signifie la position entre le mot et l'espace. |
/ B | Correspondre aux limites des non-mots. |
Les qualifications ne peuvent pas être utilisées pour les localisateurs. Puisqu'il n'y aura pas de positions consécutives avant ou après une nouvelle ligne ou une limite de mot, les expressions telles que «^ *» ne sont pas autorisées.
Pour correspondre au texte au début d'une ligne de texte, utilisez le caractère '^' au début de l'expression régulière. Ne confondez pas cette syntaxe de '^' avec sa syntaxe entre parenthèses Expressions. Leur syntaxe est fondamentalement différente.
Pour correspondre au texte à la fin d'une ligne de texte, utilisez le caractère «$» à la fin de l'expression régulière.
Pour utiliser un localisateur lors de la recherche de titres de chapitre, l'expression régulière JScript suivante correspondra à un titre de chapitre avec jusqu'à deux numéros au début d'une ligne:
/^Chapter [1-9][0-9]{0,1}/
Les expressions régulières pour la même fonction dans VBScript sont les suivantes:
^Chapter [1-9][0-9]{0,1}
Un véritable titre de chapitre apparaît non seulement au début d'une ligne, mais n'a également que ce contenu dans cette ligne, il doit donc également être à la fin d'une ligne. L'expression suivante garantit que la correspondance spécifiée ne correspond que le chapitre et ne correspond pas aux références croisées. Il est réalisé en créant une expression régulière qui ne correspond que les positions de début et de fin d'une ligne de littéral.
/^Chapter [1-9][0-9]{0,1}$/
Pour VBScript, utilisez:
^Chapter [1-9][0-9]{0,1}___FCKpd___16quot;
Les limites de mot correspondantes sont légèrement différentes, mais cela ajoute une fonction très importante aux expressions régulières. Le mot limite est la position entre le mot et l'espace. Les limites des non-mots sont ailleurs. L'expression JScript suivante correspondra aux trois premiers caractères du mot «chapitre» car ils apparaissent après la limite du mot:
//bCha/
Pour VBScript:
/bCha
La position de l'opérateur «/ b» est critique ici. Si c'est au début de la chaîne à correspondre, un match au début du mot est recherché; Par exemple, l'expression suivante correspondra à «ter» dans le mot «chapitre» car il apparaît avant la limite du mot:
/ter/b/
ainsi que
ter/b
L'expression suivante correspondra à «apt» car elle est au milieu du «chapitre», mais ne correspondra pas à «apt» dans «aptitude»:
//Bapt/
ainsi que
/Bapt
En effet, «apt» apparaît dans la position limite non du mot dans le mot «chapitre» et dans le mot «aptitude». La position des opérateurs de limites non mot n'est pas importante car le match n'a rien à voir avec le début ou la fin d'un mot.