Cette fois, je vais vous apporter une explication détaillée de l'utilisation de l'appariement répété régulier. Quelles sont les précautions lors de l'utilisation de l'appariement répété régulier. Ce qui suit est un cas pratique, jetons un coup d'œil.
L'exemple de cet article décrit la correspondance répétée du didacticiel Expression régulière. Partagez-le avec tout le monde pour référence, comme suit :
Remarque : Dans tous les exemples, les résultats de correspondance des expressions régulières sont inclus dans le texte source [ et ], quelques exemples seront implémentés en utilisant Java. S'il s'agit de l'utilisation d'expressions régulières dans Java lui-même, cela sera expliqué à l'endroit correspondant. 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 faire correspondre un caractère, mais un personnage ou un ensemble de caractères doit être associé ? plusieurs fois. Cela devrait être Comment faire ? 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 jeu de caractères), donnez simplement le caractère (ou le jeu de caractères) plus 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]+ correspondra à plusieurs nombres consécutifs.
Remarque : lors de l'ajout d'un suffixe + à un jeu de caractères, le + doit être placé 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 un nombre ou un signe + 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 à une chaîne comme xxxx.edu., et elle ne se terminera pas par un caractère . w+ à l'arriè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 que +, remplacez-le simplement. Mettez-le après. un caractère ou un jeu de caractères correspondant à zéro ou plusieurs occurrences consécutives du caractère (ou du jeu de caractères). Par exemple, l'expression régulière ab*c peut correspondre à ac, abc, abbbbc, etc.
3. Faites correspondre zéro ou un caractère
Faites correspondre zéro ou un caractère en utilisant le métacaractè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 correspondant au protocole http ou https :
Texte : L'URL est http://www.mikan.com, pour vous connecter en toute sécurité utilisez https:// www.mikan.comà la place.
Expression régulière :https?://(w+.)+w+
Résultat :Le 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.
2. Nombre de répétitions correspondantes
+, * et ? dans les expressions régulières résolvent de nombreux problèmes, mais :
1) Il n'y a pas de limite supérieure sur le nombre de caractères correspondants + et *. Nous ne pouvons pas 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 ce nombre entre { et } entre. 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 le nombre de correspondances répétées Définir une valeur minimale et maximale. 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. Combien de fois le match doit-il être répété au moins ?
La dernière utilisation de la syntaxe {} est de donner un nombre minimum de répétitions (mais c'est le cas). il n'est pas nécessaire de donner un nombre maximum de répétitions), comme {3,} signifie répéter au moins 3 fois. 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 $
+, *, ? peut être exprimé en nombre de répétitions :
+ équivaut à {1,}
* équivaut à {0,}
? Équivalent à {0,1}
3. Empêcher la sur-correspondance
ne peut correspondre qu'à zéro ou un caractère, {n} et ? {n,m} a également une limite supérieure sur le nombre de répétitions correspondantes, mais il n'y a pas de limite supérieure pour *, +, {n,}, ce qui conduit parfois à une sur-correspondance.
Regardons un exemple de correspondance avec une balise HTML
Texte :
Hier, c'est history ,demain est un mystère, mais aujourd'hui est un cadeau.
Expression régulière : <[Bb]> . *[Bb]>
Résultat :
Hier c'est 【histoire,demain est un < ; B>mystère, mais aujourd'hui c'est un cadeau].
Analyse : <[Bb]>correspond au correspond à la balise Mais le résultat n'est pas celui attendu. Il y en a trois. Tout ce qui se trouve après la première balise
Pourquoi cela se produit-il ? Étant donné que * et + sont tous deux des métacaractères gourmands, leur modèle de comportement lors de la correspondance est d'autant meilleur qu'ils feront de leur mieux pour correspondre du début à la fin du texte, plutôt que du début du texte jusqu'à. la première correspondance est rencontrée.
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 :
* *?
+ >{n,} {n,}?
Donc, dans l'exemple ci-dessus, l'expression régulière doit seulement être modifiée en <[Bb]>.*?[Bb]> Voilà, le résultat est le suivant : > gift
4.Résumé
Le véritable pouvoir des expressions régulières se reflète dans le nombre de répétitions correspondant. aspect. Nous introduisons ici l'utilisation de plusieurs 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.
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php. !
Lecture recommandée :Tutoriel de correspondance de position du didacticiel d'expression régulière (avec code)
Implémenté avec php et js régulièrement mots de passe correspondants qui combinent des chiffres et des lettres
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!