java - 正则捕捉中(.*?)和(.*)的区别
伊谢尔伦
伊谢尔伦 2017-04-18 10:55:01
0
5
619

Java使用正则匹配捕捉
1 Pattern p = Pattern.compile("name="sign" value="(.*)"/>");
2 Pattern p = Pattern.compile("name="sign" value=*"(.?)**"/>");
第二个比第一个多了一个?号,请问其中区别是什么

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(5)
伊谢尔伦

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.

Peter_Zhu

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

  1. 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
  1. 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
刘奇

?Le plus petit correspondant sera sélectionné.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal