", mais le résultat réel correspondra à "aava ". mode en détail."/> ", mais le résultat réel correspondra à "aava ". mode en détail.">

Maison  >  Article  >  Java  >  Exemple d'analyse de la correspondance de modèles gourmands d'expressions régulières dans les programmes Java

Exemple d'analyse de la correspondance de modèles gourmands d'expressions régulières dans les programmes Java

黄舟
黄舟original
2017-01-20 11:10:581587parcourir

Le mode gourmand est également appelé correspondance maximale. X?, tr>abb", peut-être que le résultat que vous attendez correspond à "a34de1251f0d9fe1e645927f19a896e8", mais le résultat réel correspondra à "a34de1251f0d9fe1e645927f19a896e8aava 2688fc03e5140d9bef12bef73424f836". Examinons la cupidité en détail. Utilisation du mode.

Mode gourmand :

L'indicateur de quantité passe par défaut en mode gourmand, sauf indication contraire. Les expressions en mode gourmand continueront à correspondre jusqu'à ce qu'aucune correspondance ne soit trouvée. Si vous constatez que les résultats de la correspondance d'expression ne sont pas ceux attendus, c'est probablement parce que - vous pensiez que l'expression ne correspondrait qu'aux premiers caractères, mais en fait il s'agit d'un modèle gourmand, donc elle continuera à correspondre.
Gourmand et non gourmand, plus ? signifie non gourmand :

var s = '1023000'.match(/(\d+)(0*)/);
s
["1023000", "1023000", ""]
 
var s = '1023000'.match(/^(\d+)(0*)$/);
s
["1023000", "1023000", ""]
 
var s = '1023000'.match(/^(\d+?)(0*)$/);
s
["1023000", "1023", "000"]
 
var s = '1023000'.match(/(\d+?)(0*)/);
s
["10", "1", "0"]

java 36192aedb11b250c6c5e813d2103e241aspku.com/kaifa/zhengze/" target="_blank"> Regular L'expression utilise par défaut le mode de correspondance gourmand et gourmand, qui est la correspondance la plus longue de ce type (.*). Si la correspondance la plus courte est requise, elle est remplacée par (.*?), qui est le mode de correspondance réticent. Analyse du principe :
S'il s'agit d'un mode de correspondance gourmand, le moteur d'expression régulière fera la correspondance jusqu'à la fin de la chaîne. Lorsque la correspondance est fausse, il trouvera la première position correspondante du bas jusqu'à
. retour en arrière. Renvoie le résultat correspondant
Si le modèle correspond à peine, le moteur d'expression régulière fera correspondre le caractère à la fin du modèle, puis remontera un peu plus loin et constatera que la correspondance est fausse, puis reviendra en arrière. pour trouver la correspondance la plus récente renvoyée. La position true renvoie le résultat.
Regardez le code :
Exemple 1 :

public void test51(){ 
  String str = "aaa\"bbb\"ccc\"ddd\"eee"; 
  System.out.println(str); 
  str = str.replaceAll("\"(.*)\"", "@"); 
  System.out.println(str); 
}

Sortie :

aaa"bbb"ccc"ddd"eee
aaa@eee

Exemple 2 :

@Test 
 public void test52(){ 
   String str = "aaa\"bbb\"ccc\"ddd\"eee"; 
   System.out.println(str); 
     
   str = str.replaceAll("\"(.*?)\"", "@"); 
   System.out.println(str); 
     
 }

Sortie :

aaa"bbb"ccc"ddd"eee
aaa@ccc@eee

Ce qui précède est un exemple de correspondance de modèles gourmands d'expressions régulières dans des programmes Java. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


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