Maison > développement back-end > tutoriel php > Que fait la classe de caractères « [^][] » dans une expression régulière ?

Que fait la classe de caractères « [^][] » dans une expression régulière ?

Barbara Streisand
Libérer: 2024-11-07 00:47:02
original
276 Les gens l'ont consulté

What does the character class

Décodage de la classe de caractères "[^][]"

Dans l'expression régulière [(?:[^][]|(? R))*], la classe de caractères "[^][]" soulève une question particulière. Élucidons sa signification et dissipons toute ambiguïté.

Signification de "[^][]"

"[^][]" est une classe de caractères qui correspond à n'importe quel caractère sauf "[" et "]". Cette expression exclut effectivement "[" et "]" de l'ensemble des caractères correspondants.

Résolution d'ambiguïté

Certains diront que la séquence "[^]" est ambigu, conduisant à une interprétation possible comme une évasion pour "^" et un "]" littéral. Cependant, PCRE, le moteur d'expression régulière utilisé par les fonctions preg_, résout cette ambiguïté. Étant donné que "[^]" n'est pas valide dans PCRE, l'analyse interprète "]" comme étant enfermé dans la classe de caractères, laissant la classe fermée par un "]" ultérieur.

Règles contextuelles supplémentaires

  • "[^]" peut être écrit comme "1" ou "[^][]" sans échapper au "[" ou "]".
  • Le modificateur "xx" en ligne dans PHP 7.3 élimine le besoin d'échappement même au sein des classes de caractères.
  • Le premier caractère de la classe de caractères détermine l'interprétation. "[^]]" correspond à n'importe quel caractère suivi de "]", tandis que "2]" correspond à un non-"a" suivi de "]".
  • En JavaScript, "[]" est défini comme un jeton qui ne correspond jamais, tandis que "[^]" correspond à n'importe quel caractère.
  • Le modèle d'expression régulière fourni [(?:[^][]|(?R ))*] correspond aux crochets, permettant la récursivité pour les crochets imbriqués.
  • Un modèle plus efficace et réutilisable pour faire correspondre les crochets est "([[^][](?:(?-1)[ ^][])* ])".

Conclusion

La classe de caractères "[^][]" exclut simplement les caractères " [" et "]" de la correspondance. Cette interprétation est cohérente dans tous les moteurs compatibles PCRE, y compris JavaScript (à quelques exceptions près). En comprenant ces règles, les programmeurs peuvent utiliser efficacement cette classe de caractères dans leurs modèles d'expression régulière.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal