Maison >développement back-end >Tutoriel Python >Pourquoi l'expression régulière '\d ' correspond-elle aux adresses IP telles que '78.46.92.168:8000' au lieu de uniquement des chiffres numériques ?

Pourquoi l'expression régulière '\d ' correspond-elle aux adresses IP telles que '78.46.92.168:8000' au lieu de uniquement des chiffres numériques ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-13 06:43:02177parcourir

Why does the regex

Vérification d'une chaîne entière avec une expression régulière

Lorsque vous essayez de déterminer si une chaîne est numérique à l'aide de l'expression régulière "d", elle peut découvrez que le modèle correspond également aux adresses IP telles que « 78.46.92.168:8000 ». Cela peut prêter à confusion, car on pourrait s'attendre à ce que « d » ne corresponde qu'à des chiffres numériques. Pour comprendre pourquoi cela se produit, il est nécessaire de comprendre le comportement de "d".

Comprendre "d"

La classe de caractères "d" correspond à n'importe quel caractère à un chiffre dans la plage ASCII (0-9). Le quantificateur " " désigne une ou plusieurs occurrences de l'élément précédent ("d" dans ce cas), indiquant que "d " correspondra à une séquence d'un ou plusieurs chiffres.

Dans l'exemple de chaîne "78.46. 92.168:8000", la séquence "78" est une correspondance valide pour "d". Il correspond aux 78 premiers, pas à la chaîne entière. Une fois la correspondance réussie, le code appelle doStuff().

Correspondance de la chaîne entière

Pour faire correspondre la chaîne entière et s'assurer qu'elle ne contient que des chiffres numériques , il est nécessaire d'utiliser un modèle d'expression régulière plus spécifique.

  • **Ajout de "^" et "$":** L'ajout de "^" (début de chaîne) et "$" (fin de chaîne) à l'expression régulière garantit qu'elle correspond à l'intégralité de la chaîne d'entrée. Par exemple, "^d $" ne correspondrait qu'aux chaînes composées exclusivement de chiffres.
  • Utilisation de "isdigit()" : Python fournit la méthode "isdigit()" sur les chaînes, qui renvoie une valeur booléenne indiquant si la chaîne entière contient uniquement des chiffres numériques. Par exemple, "78.46.92.168:8000".isdigit() renverrait False car la chaîne contient des caractères non numériques.

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