Maison > développement back-end > tutoriel php > Modèle de correspondance paresseux d'expression régulière (?)

Modèle de correspondance paresseux d'expression régulière (?)

高洛峰
Libérer: 2023-03-04 17:36:01
original
2193 Les gens l'ont consulté

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/));
Copier après la connexion

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/));
Copier après la connexion

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 :

Modèle de correspondance paresseux dexpression régulière (?)

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";
Copier après la connexion

À 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";
Copier après la connexion

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;
Copier après la connexion

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 Modèle de correspondance paresseux d'expression régulière (?)

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 !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal