Maison >Java >javaDidacticiel >Comment les ancres d'expression régulière '^' et '$' contrôlent-elles la correspondance des modèles ?

Comment les ancres d'expression régulière '^' et '$' contrôlent-elles la correspondance des modèles ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-29 20:32:10304parcourir

How Do Regular Expression Anchors '^' and '$' Control Pattern Matching?

Comprendre les ancres d'expressions régulières : ^ et $

Dans le domaine des expressions régulières, '^' et '$' exercent un pouvoir important. Ils servent de marqueurs de limite, limitant la correspondance de motifs à des régions spécifiques d'une chaîne.

'^' (Début de l'ancre de chaîne)

L'ancre '^' correspond à la début d'une chaîne. Cela garantit que le motif est au premier plan de tout match. Prenons l'exemple :

^\w+@\w+[.]\w+

Ce modèle correspond aux adresses e-mail telles que "john@example.com" mais pas "john@example.com.office". Sans le « ^ », l'expression régulière pourrait correspondre à « ohn@example.com » dans la chaîne la plus longue, ce qui n'est probablement pas prévu.

'$' (Ancrage de fin de chaîne)

À l'inverse, l'ancre '$' correspond à la fin d'une chaîne. Cela restreint la correspondance de modèle jusqu'à la toute fin. Par exemple :

\w+@\w+[.]\w+$

Ce modèle garantit qu'une adresse e-mail est une correspondance isolée, et pas seulement une sous-chaîne au sein d'une chaîne plus grande.

Combinaison d'ancrage

La combinaison des ancres '^' et '$' applique une correspondance complète des chaînes. Prenons l'exemple :

^\w+@\w+[.]\w+$

Ce modèle garantit que chaque caractère de la chaîne d'entrée correspond à un caractère du modèle. Si une partie de la chaîne tombe en dehors du modèle, aucune correspondance ne sera trouvée.

Considérations supplémentaires

  • Dans certaines implémentations, les ancres sont implicitement présentes au niveau du motif. début et fin des chaînes (par exemple, la méthode matches() de Java).
  • Le drapeau (?m), ou Pattern.MULTILINE constante, permet à '^' et '$' de faire correspondre les sauts de ligne, permettant une correspondance flexible dans les chaînes multilignes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn