Mode de correspondance paresseux d'expression régulière :
Dans le chapitre sur le mode de correspondance gourmand, il a été dit que la nature humaine est avide, dans l'espoir d'obtenir plus d'argent, de statut et même de belles femmes, mais il y a aussi beaucoup de gens qui le sont stoïque, tant qu'ils sont satisfaits, les besoins de base de la vie sont suffisants. Il existe également de tels principes de correspondance dans les expressions régulières. Présentons-les ci-dessous.
1. Le concept du mode paresseux :
Ce mode est exactement l'opposé du mode gourmand. Il correspond au moins de caractères possible pour satisfaire l'expression régulière, par exemple :
var str="axxyyzbdkb"; console.log(str.match(/a.*b/));
Le code ci-dessus est en mode gourmand, il peut donc correspondre à la chaîne entière Modifions-le en mode de correspondance paresseux :
var str="axxyyzbdkb"; console.log(str.match(/a.*?b/));
Le code ci-dessus est une correspondance paresseuse. La méthode consiste à ajouter un point d'interrogation (?) après le quantificateur répété.
Le mode de correspondance paresseux consiste à faire correspondre le moins de caractères possible, mais doit respecter les règles de correspondance des expressions régulières. Par exemple, dans le code ci-dessus, * peut correspondre à plusieurs reprises à 0 ou plusieurs caractères ou sous-expressions précédents, mais les expressions régulières La fin. de la formule doit être b, afin que l'expression régulière puisse correspondre à axxyyzb dans la chaîne ci-dessus.
Le résumé est le suivant :
1. Ajoutez un point d'interrogation (?) après le quantificateur répété pour former une correspondance paresseuse.
2. La correspondance paresseuse correspondra au moins de caractères possible, mais l'ensemble du modèle de correspondance doit être satisfait.
2. Liste des qualificatifs paresseux :
Ce qui suit est mon introduction
En fait, l'avidité et la paresse sont faciles à comprendre, littéralement Nous pouvons connaître la signification. Le soi-disant « gourmand » signifie que s'il répond aux exigences, il continuera à correspondre jusqu'à ce qu'il ne puisse pas être égalé. Le mode dit paresseux signifie qu'une fois qu'une correspondance appropriée est trouvée, elle se termine et la correspondance ne se poursuit plus. Ci-dessous, je présenterai quelques exemples pour la décrire principalement.
Parlons d’abord des identifiants du mode gourmand : ,? ,*,{n},{n,},{n,m}. Mode paresseux : ? ,? ? ,*? ? ,{n}?,{n,}?,{n,m}?;
Exemple 1
var pattern=/8[a-zA-Z0-9]*7/;贪婪模式 var string="abc8defghij7klngon8qrstwxy7";
À ce time Le mode gourmand * est utilisé, ce qui signifie qu'il peut y avoir n'importe quel nombre de lettres entre 8 et 8. Ensuite, cette règle régulière correspondra en premier aux 8 premiers. Si elle correspond, elle correspondra au contenu suivant sans restrictions, aussi longtemps. comme le contenu suivant satisfait à [a-zA-Z0-9]. Continuez à faire correspondre jusqu'à ce qu'il ne puisse plus correspondre, voyez si le suivant est 7, sinon, avancez d'un (crachez-en un pour voir si c'est 7), sinon, continuez à cracher jusqu'à ce que 7 soit craché, et puis match C'est le contenu entre les deux. Le contenu correspondant correspond donc à la chaîne entière.
var pattern=/8[a-zA-Z0-9]*?7/ig;惰性模式 var string="abc8defghij7klngon8qrstwxy7";
L'expression régulière ci-dessus utilise le mode paresseux *?, et la méthode de correspondance est comme ceci, faites d'abord correspondre un 8, puis faites correspondre un caractère plus tard, voyez s'il correspond à [a-zA-Z0-9]. S'il correspond, vérifiez si le caractère suivant est 7. Si c'est 7, terminez-le. Sinon, faites correspondre le caractère suivant pour voir s'il correspond. [a-zA-Z0-9], s'il correspond, vérifiez si le caractère suivant est 7. S'il est 7, terminez-le. Sinon, bouclez selon la méthode ci-dessus jusqu'à ce qu'il corresponde.
(2). Les schémas gourmands et paresseux peuvent également s’exprimer d’une autre manière.
Exemple 2
var test="<img src="aaa/111.jpg"/ alt="Modèle de correspondance paresseux d'expression régulière (?)" ><img src="aaa/112.jpg"/ alt="Modèle de correspondance paresseux d'expression régulière (?)" ><img src="aaa/113.jpg"/ alt="Modèle de correspondance paresseux d'expression régulière (?)" >"; var pattern=/<img [^ alt="Modèle de correspondance paresseux d'expression régulière (?)" >]*\/>/ig;
De cette façon, le mode paresseux peut également être implémenté, [^>] signifie que le ne peut pas apparaître entre />, les résultats peuvent donc être trouvés pour chaque balise
Pour plus d'articles liés aux modèles de correspondance paresseuse d'expressions régulières (?), veuillez faire attention au site Web PHP chinois !