Lorsqu'une expression régulière contient des qualificatifs qui acceptent les répétitions, le comportement habituel est de faire correspondre autant de caractères que possible (tout en permettant la correspondance de l'expression entière). Prenons cette expression comme exemple : a.*b, elle correspondra à la chaîne la plus longue commençant par a et se terminant par b. Si vous l'utilisez pour rechercher aabab, il correspondra à la chaîne entière aabab. C’est ce qu’on appelle le matching gourmand. Parfois, nous avons besoin d'une correspondance paresseuse, c'est-à-dire de faire correspondre le moins de caractères possible. Les qualificatifs donnés ci-dessus peuvent être convertis en modèles de correspondance paresseux en ajoutant un point d'interrogation après eux. De cette façon, .*? signifie faire correspondre n'importe quel nombre de répétitions, mais en utilisant le moins de répétitions qui garantiront le succès de la correspondance globale. Regardez maintenant la version paresseuse de l'exemple : a.*?b correspond à la chaîne la plus courte commençant par a et se terminant par b. Si vous l'appliquez à aabab, il correspondra à aab (caractères 1 à 3) et ab (caractères 4 à 5).
Copié depuis : http://deerchao.net/tutorials... Introduction de 30 minutes aux expressions régulières, partie gourmande et paresseuse
Cette question implique le mode gourmand et le mode paresseux (également appelé mode non gourmand) dans les expressions régulières Tout d'abord, jetons un coup d'œil aux définitions de ces deux
Mode gourmand, correspondance maximale*,+,'{n,}',.*appartiennent tous au mode gourmand, ce qu'on appelle la correspondance maximale, laissez-moi vous donner une idée. exemple
var pattern = /a.*e/
console.log("abcd fsdfsdfsesfdfsdfsesdfedfsdfses".match(pattern)); //结果为abcd fsdfsdfsesfdfsdfsesdfedfsdfse
Mode paresseux, sous le principe d'une correspondance réussie, faites correspondre le moins de fois possible. Toujours l'exemple ci-dessus :
var pattern = /a.*?e/
console.log("abcd fsdfsdfsesfdfsdfsesdfedfsdfses".match(pattern)); //结果为abcd fsdfsdfse
La différence entre gourmand et non gourmand.
Pour faire simple, non gourmand signifie qu'il s'arrêtera quand il y aura un match, qu'il y ait ou non un autre match plus tard.
Lorsqu'une expression régulière contient des qualificatifs qui acceptent les répétitions, le comportement habituel est de faire correspondre autant de caractères que possible (tout en permettant la correspondance de l'expression entière). Prenons cette expression comme exemple : a.*b, elle correspondra à la chaîne la plus longue commençant par a et se terminant par b. Si vous l'utilisez pour rechercher aabab, il correspondra à la chaîne entière aabab. C’est ce qu’on appelle le matching gourmand.
Parfois, nous avons besoin d'une correspondance paresseuse, c'est-à-dire de faire correspondre le moins de caractères possible. Les qualificatifs donnés ci-dessus peuvent être convertis en modèles de correspondance paresseux en ajoutant un point d'interrogation après eux. De cette façon, .*? signifie faire correspondre n'importe quel nombre de répétitions, mais en utilisant le moins de répétitions qui garantiront le succès de la correspondance globale. Regardez maintenant la version paresseuse de l'exemple :
a.*?b correspond à la chaîne la plus courte commençant par a et se terminant par b. Si vous l'appliquez à aabab, il correspondra à aab (caractères 1 à 3) et ab (caractères 4 à 5).
Copié depuis : http://deerchao.net/tutorials... Introduction de 30 minutes aux expressions régulières, partie gourmande et paresseuse
Le premier s'arrêtera après avoir trouvé une correspondance, tandis que le second trouvera toutes les cibles correspondantes.
Cette question implique le mode gourmand et le mode paresseux (également appelé mode non gourmand) dans les expressions régulières
Tout d'abord, jetons un coup d'œil aux définitions de ces deux
Mode gourmand, correspondance maximale
*
,+
,'{n,}',.*
appartiennent tous au mode gourmand, ce qu'on appelle la correspondance maximale, laissez-moi vous donner une idée. exempleMode paresseux, sous le principe d'une correspondance réussie, faites correspondre le moins de fois possible.
Toujours l'exemple ci-dessus :
?Le plus petit correspondant sera sélectionné.