Maison interface Web js tutoriel Explication détaillée de la correspondance répétée dans le didacticiel d'expression régulière

Explication détaillée de la correspondance répétée dans le didacticiel d'expression régulière

Jan 09, 2017 pm 04:01 PM

L'exemple de cet article décrit la correspondance répétée 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. Combien y a-t-il de correspondances ?

Les articles précédents parlaient de la correspondance d'un caractère, mais un caractère ou un ensemble de caractères doit être associé plusieurs fois. Par exemple, si vous souhaitez faire correspondre une adresse e-mail, en utilisant la méthode mentionnée précédemment, quelqu'un peut écrire une expression régulière comme w@w.w, mais cela ne peut correspondre qu'à des adresses comme a@b.c, ce qui est évidemment incorrect. Voyons ensuite comment. pour faire correspondre les adresses e-mail.

Tout d'abord, vous devez connaître la composition d'une adresse email : un groupe de caractères commençant par un caractère alphanumérique ou un trait de soulignement, suivi du symbole @, puis du nom de domaine, c'est-à-dire nom d'utilisateur@nom de domaine. adresse. Cependant, cela dépend également du fournisseur de services de messagerie spécifique. Certains autorisent également les caractères .

1. Faites correspondre un ou plusieurs caractères

Pour faire correspondre plusieurs répétitions du même caractère (ou ensemble de caractères), ajoutez simplement un caractère comme suffixe. Correspond à un ou plusieurs caractères (au moins un). Par exemple : a correspond à a lui-même, a correspondra à un ou plusieurs a consécutifs ; [0-9] correspond à plusieurs nombres consécutifs.

Remarque : lors de l'ajout d'un suffixe à un jeu de caractères, vous devez le placer en dehors du jeu de caractères, sinon il ne s'agira pas d'une correspondance répétée. Par exemple, [0-9] représente des nombres ou des nombres. Bien que ce soit grammaticalement correct, ce n'est pas ce que nous voulons.

Texte : Bonjour, mhmyqn@qq.com ou mhmyqn@126.com est mon email.

Expression régulière : w @(w.) w

Résultat : Bonjour , [mhmyqn@qq.com] ou [mhmyqn@126.com] est mon email.

Analyse : w peut correspondre à un ou plusieurs caractères, et la sous-expression (w .) peut correspondre à quelque chose comme xxxx Une chaîne comme .edu. ne se terminera pas par un caractère . Les adresses e-mail telles que mhmyqn@xxxx.edu.cn seront également mises en correspondance.

2. Faites correspondre zéro ou plusieurs caractères

Faites correspondre zéro ou plusieurs caractères en utilisant le métacaractère * Son utilisation est exactement la même, il suffit de le mettre dans le caractère ou le jeu de caractères Après , vous pouvez faire correspondre. zéro ou plusieurs occurrences consécutives du caractère (ou de l'ensemble de caractères). Par exemple, l'expression régulière ab*c peut correspondre à ac, abc, abbbbc, etc.

3. Faire correspondre zéro ou un caractère

Utiliser un métacaractère ? pour faire correspondre zéro ou un caractère. Comme mentionné dans l'article précédent, l'expression régulière rnrn est utilisée pour faire correspondre une ligne vide, mais sous Unix et Linux, r n'est pas requis, donc le métacaractère ?, r?nr?n peut être utilisé pour faire correspondre des lignes vides sous Windows, ainsi que Correspond aux lignes vides sous Unix et Linux. Regardons un exemple d'URL qui correspond au protocole http ou https :

Texte : L'URL est http://www.mikan.com, pour vous connecter en toute sécurité, utilisez plutôt https://www.mikan.com .

Expression régulière : https?://(w .) w

Résultat : L'URL est [http://www.mikan.com], pour vous connecter en toute sécurité utilisez [https : / /www.mikan.com] à la place.

Analyse : Ce modèle commence par https?, ce qui signifie que le caractère avant ? peut exister ou non, il peut donc correspondre à http ou https, et à cette dernière partie. est le même que le précédent.

2. Nombre de répétitions correspondantes

Les expressions régulières, * et ? résolvent de nombreux problèmes, mais :

1) Le nombre de caractères correspondants avec * n'est pas une limite supérieure. . Il n'existe aucun moyen de définir un nombre maximum de caractères auxquels ils correspondront.

2) , * et ? correspondent à au moins un ou zéro caractères. Nous ne pouvons pas définir un autre nombre minimum de caractères pour lesquels ils correspondront.

3) Si nous utilisons uniquement * et , nous ne pouvons pas définir le nombre de caractères auxquels ils correspondent à un nombre exact.

Les expressions régulières fournissent une syntaxe pour définir le nombre de répétitions. Le nombre de répétitions doit être indiqué à l'aide des caractères { et }, et la valeur doit être écrite entre eux.

1. Définissez une valeur exacte pour le nombre de correspondances répétées

Si vous souhaitez définir une valeur exacte pour le nombre de correspondances répétées, écrivez simplement le nombre entre { et }. Par exemple, {4} signifie que le caractère (ou l'ensemble de caractères) qui le précède doit être répété 4 fois dans le texte original pour être considéré comme une correspondance. S'il n'apparaît que 3 fois, il n'est pas considéré comme une correspondance.

Comme mentionné dans les articles précédents pour des exemples de correspondance des couleurs sur la page, vous pouvez utiliser le nombre de répétitions pour faire correspondre : #[[:xdigit:]]{6} ou #[0-9a-fA -F ]{6}, les caractères POSIX sont #\p{XDigit}{6} en Java.

2. Définir un intervalle pour le nombre de correspondances répétées. La syntaxe

{} peut également être utilisée pour définir un intervalle pour le nombre de correspondances répétées, c'est-à-dire définir une valeur minimale et maximale. valeur. Ces intervalles doivent être donnés sous la forme {n, m}, où n>=m>=0. Par exemple, une expression régulière qui vérifie si le format de date est correct (sans vérifier la validité de la date) (comme la date 2012-08-12 ou 2012-8-12) : d{4}-d{1, 2}-d{1, 2}.

3. Au moins combien de fois le match doit-il être répété

La dernière utilisation de la syntaxe

{} est de donner un nombre minimum de répétitions (mais pas nécessairement un nombre maximum de répétitions), comme {3,} indiquant au moins 3 répétitions. Remarque : Il doit y avoir une virgule entre {3,} et il ne peut pas y avoir d'espace après la virgule. Sinon, quelque chose ne va pas.

Regardons un exemple, utilisez des expressions régulières pour trouver tous les montants supérieurs à 100 $ :

Texte :

25,36 $

125,36 $

205,0$

2500,44$

44,30$

Expression régulière : $d{3,}.d{2}

Résultat :

25,36 $

【125,36 $】

【205,0 $】

【2500,44 $】

44,30 $

,*, ? de répétitions :

équivaut à {1,}

* équivaut à {0,}

équivaut à {0,1}

3. Empêcher la sur-correspondance

 ? Il ne peut correspondre qu'à zéro ou un caractère {n} et {n,m} ont également une limite supérieure sur le nombre de répétitions correspondantes, mais il n'y a pas de limite supérieure. pour le nombre de répétitions correspondantes comme *, , {n,} Limite supérieure, ce qui conduit parfois à une sur-correspondance.

Regardons un exemple de correspondance avec une balise html

Texte :

Hier c'est histoire, demain est un mystère< ;/ B>, mais aujourd'hui c'est un cadeau.

Expression régulière : <[Bb]>.*

Résultat :

Hier c'est [histoire, demain est un mystère, mais aujourd'hui c'est un cadeau].

Analyse : <[Bb]> correspond aux balises (insensible à la casse), correspond aux balises Mais le résultat n'est pas trois comme prévu. Tout, de la première balise
à la dernière balise

Pourquoi cela se produit-il ? Parce que * et sont tous deux des métacaractères gourmands, leur modèle de comportement lors de la correspondance est d'autant plus grand qu'ils feront de leur mieux pour correspondre du début à la fin du texte, plutôt que du début à la fin du texte. .jusqu'au premier match.

Des versions paresseuses de ces métacaractères peuvent être utilisées lorsqu'un tel comportement gourmand n'est pas requis. Paresseux signifie faire correspondre le moins de caractères possible, par opposition à gourmand. Les métacaractères paresseux n'ont besoin que d'ajouter un suffixe ? aux métacaractères gourmands. Voici la version paresseuse du métacaractère gourmand :

* *?

Dans l'exemple ci-dessus, l'expression régulière doit uniquement être modifiée en <[Bb]>.*?< ;/[Bb]>. Le résultat est le suivant :

histoire

mystère

gift

Quatre Résumé

Expression régulière Le vrai pouvoir se reflète dans la correspondance des répétitions. Nous introduisons ici l'utilisation de métacaractères tels que , * et ? Si vous souhaitez déterminer avec précision le nombre de correspondances, utilisez {}. Il existe deux types de métacaractères : gourmands et paresseux. Lorsque vous devez éviter une correspondance excessive, veuillez utiliser des métacaractères paresseux pour construire des expressions régulières. L'appariement de position sera introduit dans le prochain article.

J'espère que cet article sera utile à tout le monde pour apprendre les expressions régulières.

Pour plus de didacticiels sur les expressions régulières sur les correspondances répétées et les articles connexes, veuillez faire attention au site Web PHP chinois !

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Qui est payé plus de python ou de javascript? Qui est payé plus de python ou de javascript? Apr 04, 2025 am 12:09 AM

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Démystifier javascript: ce qu'il fait et pourquoi c'est important Démystifier javascript: ce qu'il fait et pourquoi c'est important Apr 09, 2025 am 12:07 AM

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Apr 04, 2025 pm 05:09 PM

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido?
ou:
Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Apr 04, 2025 pm 05:36 PM

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

JavaScript est-il difficile à apprendre? JavaScript est-il difficile à apprendre? Apr 03, 2025 am 12:20 AM

Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.

Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Apr 04, 2025 pm 02:06 PM

Explorez la mise en œuvre de la fonction de glisser et de réglage du panneau de type VScode dans le frontal. Dans le développement frontal, comment implémenter un VScode comme ...

La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? Apr 04, 2025 pm 05:12 PM

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

See all articles