Cet article apporte une explication de la paresse et de la cupidité régulières. J'espère qu'il sera utile à tout le monde.
exec - > Capture régulière
Chaque fois que vous capturez, la correspondance par défaut est effectuée en premier. le résultat est nul ; nous ne pouvons capturer que le contenu correspondant ;
Format du contenu capturé
1. le tableau est le contenu capturé par l'expression régulière actuelle
Index : la position d'index où commence le contenu capturé dans la chaîne
Entrée : Chaîne originale capturée
reg = /\d+/ str = 'woshi2016ni2017' res =
var res = reg.exec(str); console.log(res) // ['2016',index:5,input:'woshi2016ni2017']
2. Caractéristiques de la capture régulière
1) Paresse -> Chaque fois que exec est exécuté, seul le premier contenu correspondant est capturé. Sans aucun traitement, même si plusieurs captures sont exécutées, le premier contenu correspondant sera toujours capturé.
LastIndex : est la position où commence la capture régulière dans la chaîne. La valeur par défaut est 0
2) Comment résoudre la paresse Sexualité. Ajouter un modificateur "g" à la fin de l'expression régulière
Modificateurs : g, i, m
global(g) : Correspondance globale
ignoreCase(i) : Ignorer la correspondance de casse
multiline(m) : Correspondance multiligne 🎜>
var reg = /\d/g;
var str = 'woshi2016ni2017';
console.log(reg.lastIndex)
console.log(reg.exec(str))
Principe : Ajouter le modificateur global g pour régulariser la valeur de notre lastIndex après que chaque capture soit devenue les dernières valeurs, et la capture suivante commencera à partir de la dernière position, afin que tout le contenu qui doit être capturé puisse être obtenu
3), écrivez votre propre programme pour obtenir l'expression régulière Tous capturés contenu (n'oubliez pas d'ajouter g)
var reg = /\d+/g;var str = 'aswofde2015xsewde2016awdefer2017';var ary = [];var res = reg.exec(str);while(res){ ary.push(res[0]) res = reg.exec(str); } console.log(ary)//[2015,2016,2017]
4), cupidité Caractéristique : Chacun la capture du modèle régulier est capturée en fonction du résultat de correspondance le plus long. Par exemple : 2 est conforme au modèle régulier, et 2015 est également conforme au modèle régulier. Par défaut, nous capturons 2015
5), comment résoudre la nature gourmande du régulier ->Ajouter un métacaractère quantificateur après ? C'est
var reg = /\d+?/g;var str = 'aswofde2015xsewde2016awdefer2017'; console.log(reg.exec(str));
ordinaire métacaractère pour représenter 0-1 occurrences de /d?/ -> Le nombre peut apparaître ou non
Le mettre après le métacaractère d'un le quantificateur est gourmand lors de l'annulation de la capture
3. La méthode de correspondance dans la chaîne -> Combiner toutes les sommes avec des caractères réguliers Tous les caractères correspondants sont obtenus
Bien que le match soit plus simple que notre exécutif dans la situation actuelle, il y a certains problèmes dans le match qu'il ne peut pas gérer seul dans le cas d'une capture groupée. , match ne peut capturer que le contenu correspondant aux grandes expressions régulières, mais le contenu capturé par les petites expressions régulières ne peut pas être obtenu
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!