Maison >Java >javaDidacticiel >Modèles de correspondance d'expressions régulières Java (gourmands, réticents, possessifs)

Modèles de correspondance d'expressions régulières Java (gourmands, réticents, possessifs)

高洛峰
高洛峰original
2017-01-09 16:19:101537parcourir

Gaviourdité : Correspondance maximale

X?, X*, X, X{n,} est la correspondance maximale. Par exemple, si vous souhaitez utiliser "8dfe5a5dfa70a1fe175d4a042ee1cdaf" pour faire correspondre "aa34de1251f0d9fe1e645927f19a896e8aava fd273fcf5bcad3dfdad3c41bd81ad3e5abb", le résultat attendu correspond peut-être à "a34de1251f0d9fe1e645927f19a896e8", mais le résultat réel correspondra à "a34de1251f0d9fe1e645927f19a896e8aava fd273fcf5bcad3dfdad3c41bd81ad3e5.

En mode gourmandise, il essaiera de faire correspondre une plage aussi large que possible jusqu'à ce que tout le contenu corresponde. À ce moment-là, lorsqu'il est trouvé que la correspondance ne peut pas réussir, elle commencera à se réduire à de petites correspondances jusqu'à ce que la correspondance soit réussie

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

Sortie : a###abb

Réticent(Paresse) (type réticent) : correspondance minimum
X??, .

En mode Réticent, tant que le match est réussi, il ne tentera plus de faire correspondre un plus grande gamme de contenu

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

Sortie : a###aava # ##abb

Différent de la gourmandise, le contenu est mis en correspondance deux fois en mode réticent

Possessif (possessif) : correspondance exacte
X?, X*, X, X{n, } est une correspondance exacte

Le mode possessif a une certaine similitude avec la gourmandise, c'est-à-dire qu'il. essaie de faire correspondre la plus grande gamme de contenu jusqu'à la fin du contenu, mais c'est différent de la gourmandise Oui, la correspondance exacte ne consiste plus à essayer de faire correspondre une plage plus petite

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, "###"));

Sortie : aa34de1251f0d9fe1e645927f19a896e8aava fd273fcf5bcad3dfdad3c41bd81ad3e5abb

Pour plus d'articles sur les modèles de correspondance d'expressions régulières Java (gourmands, réticents, possessifs), veuillez prêter attention au. Site Web PHP 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