Maison  >  Article  >  interface Web  >  Explication détaillée des trois modes de régularité (gourmand, réticent et possessif)

Explication détaillée des trois modes de régularité (gourmand, réticent et possessif)

php中世界最好的语言
php中世界最好的语言original
2018-03-30 11:26:392485parcourir

Cette fois, je vous apporte une explication détaillée des trois modes de régularité (gourmand, réticent et possessif), et les précautions d'utilisation des trois modes de régularité (gourmand, réticent et possessif) Quoi le sont-ils ? Voici des cas réels.

Gourmandise (Gvidité) : Correspondance maximale

X?, X*, X+, X{n,} est la correspondance maximale. Par exemple, si vous souhaitez utiliser "<.+>" pour faire correspondre "aaava abb", le résultat attendu correspond peut-être à "", mais le résultat réel Le résultat correspondra à Allez dans "aava .

En mode Greediness, il essaiera de faire correspondre une plage aussi large que possible jusqu'à ce que tout le contenu corresponde. À ce moment-là, lorsque s'il s'avère que le match ne peut pas réussir, il commencera à rétrécir un peu La plage de correspondance jusqu'à ce que le match soit réussi

String test = "a<tr>aava </tr>abb ";
String reg = "<.+>";
System.out.println(test.replaceAll(reg, "###"));

Sortie : a###abb

Réticent (Paresse) (réticent ) : correspondance minimale
X??, X*?, X+ ?, X{n,}? sont des correspondances minimales. En fait, X{n, m}? n'essayez plus de faire correspondre un plus large éventail de contenus

Sortie : a###aava ###abb
String test = "a<tr>aava </tr>abb ";
String reg = "<.+?>";
System.out.println(test.replaceAll(reg, "###"));

Contrairement à la gourmandise, correspondance en mode réticent Deux fois le contenu

Possessif (possessif) : correspondance exacte

X?+, Match


Le mode possessif a une certaine similitude avec la gourmandise, c'est-à-dire qu'il essaie de faire correspondre la plus grande gamme de contenus jusqu'à la fin du contenu, mais contrairement à la gourmandise, la correspondance complète ne revient plus et essaie de correspondre à une plage plus petite

Sortie : aaava abb
String test = "a<tr>aava </tr>abb ";
String reg = "<.++>";
String test2 = "<tr>";
String reg2 = "<tr>";
System.out.println(test.replaceAll(reg, "###"));
System.out.println(test2.replaceAll(reg2, "###"));

Je crois 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 sites Web chinois php

Lecture recommandée :

Explication détaillée de l'utilisation régulière. expressions sous Linux


Explication détaillée de l'utilisation des expressions régulières

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