L'exemple de cet article décrit la correspondance de position du didacticiel d'expression régulière. Partagez-le avec tout le monde pour votre référence, comme suit :
Remarque : dans tous les exemples, les résultats de correspondance des expressions régulières sont inclus entre [et] dans le texte source. Certains exemples seront implémentés en utilisant Java. Les expressions régulières en Java lui-même seront expliquées aux endroits correspondants. Tous les exemples Java sont testés sous JDK1.6.0_13.
1. Introduction au problème
Si vous souhaitez faire correspondre un certain mot dans un morceau de texte (sans tenir compte du mode multiligne pour l'instant, qui sera introduit plus tard), nous peut ressembler à ce qui suit :
Texte : Hier c'est de l'histoire, demain est un mystère, mais aujourd'hui est un cadeau.
Expression régulière : est
Résultat : Hier [est ] h [est] une histoire, demain 【est】un mystère, mais aujourd'hui 【est】un cadeau.
Analyse : à l'origine, il voulait seulement correspondre au mot est, mais il correspondait également au est contenu dans d'autres mots. Pour résoudre ce problème, utilisez des délimiteurs de limites, qui sont des métacaractères utilisés dans les expressions régulières pour indiquer où (ou limites) nous voulons que l'opération de correspondance se produise.
2. Limites des mots
Une limite couramment utilisée est la limite du mot spécifiée par le qualificatif b, qui est utilisé pour faire correspondre le début et la fin d'un mot. Plus précisément, il fait correspondre une position entre un caractère pouvant être utilisé pour former un mot (lettre, chiffre, trait de soulignement, qui est le caractère qui correspond à w) et un caractère qui ne peut pas être utilisé pour former un mot (avec W correspond à des caractères). . Regardons l'exemple précédent :
Texte : Hier c'est de l'histoire, demain est un mystère, mais aujourd'hui est un cadeau.
Expression régulière : bisb
Résultat : Hier [ est】 l'histoire, demain 【est】 un mystère, mais aujourd'hui 【est】 un cadeau.
Analyse : Dans le texte original, il y a un espace avant et après le mot est, et cela correspond au modèle bisb ( l'espace est l'un des caractères utilisés pour séparer les mots). Le mot history contient également is, car il y a deux caractères h et t avant et après aucun de ces deux caractères ne peut correspondre à b.
Si une limite de mot ne correspond pas, B est utilisé. Tels que :
Texte : Veuillez saisir l'identifiant à neuf chiffres tel qu'il apparaît sur votre clé d'accès codée en couleur.
Expression régulière : B-B
Résultat : Veuillez saisir l'identifiant [à neuf chiffres] tel qu'il apparaît sur votre [clé d'accès] codée en couleur
Analyse : B-B correspondra à un trait d'union qui n'est pas une limite de mot avant et après, à neuf chiffres et passe. -key Il n'y a pas d'espaces avant et après le trait d'union, donc cela peut correspondre. Cependant, en code couleur, il y a des espaces avant et après le trait d'union, donc cela ne peut pas correspondre.
3. Limites de chaînes
Les limites de mots peuvent être utilisées pour faire correspondre les positions liées aux mots (début de mot, fin de mot, mot entier, etc.). Les limites de chaîne ont un objectif similaire, mais sont utilisées pour faire correspondre les positions liées aux chaînes (début de chaîne, fin de chaîne, chaîne entière, etc.). Deux métacaractères sont utilisés pour définir les limites d'une chaîne : l'un est ^ utilisé pour définir le début de la chaîne et l'autre est $ utilisé pour définir la fin de la chaîne.
Par exemple, si vous souhaitez vérifier la légalité d'un document XML, les documents XML légaux commencent tous par :
Texte :
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="ear"> </project>
Expression régulière : ^s*
Résultat :
xml version="1.0" encoding="UTF-8"?>
Analyse : ^ Correspond au début d'une chaîne, donc ^s* correspondra au début d'une chaîne et à zéro ou plusieurs caractères d'espacement suivants, car les espaces, tabulations, nouvelles lignes, etc. sont autorisés devant la balise personnages.
L'utilisation du métacaractère $ est exactement la même que celle de ^ à l'exception de la différence de position. Par exemple, pour vérifier si une page html se termine par