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-22 14:38:261271parcourir

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 le match ne peut pas réussir, il commencera à se réduire à de petits matchs jusqu'à ce que l'appariement soit réussi

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 minimale
X??, X*?, >En mode Réticent, tant que le match est réussi, il n'essaiera plus de faire correspondre un éventail de contenus plus large

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

Différent de la gourmandise, faisant correspondre le contenu deux fois en mode réticent

Posssif (possessif) : correspondance complète

X ?, X*, 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 contenus jusqu'à la fin du contenu, mais contrairement à la gourmandise, la correspondance exacte ne retombe plus. et essaie de faire correspondre une plage de taille 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

Plus de modèles de correspondance d'expressions régulières Java. (type gourmand, réticent, type possessif), veuillez faire attention au site 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