Maison > Questions et réponses > le corps du texte
Java使用正则匹配捕捉
1 Pattern p = Pattern.compile("name="sign" value="(.*)"/>");
2 Pattern p = Pattern.compile("name="sign" value=*"(.?)**"/>");
第二个比第一个多了一个?号,请问其中区别是什么
伊谢尔伦2017-04-18 10:57:01
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.
天蓬老师2017-04-18 10:57:01
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
PHP中文网2017-04-18 10:57:01
Le premier s'arrêtera après avoir trouvé une correspondance, tandis que le second trouvera toutes les cibles correspondantes.
高洛峰2017-04-18 10:57:01
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