664 votes

Que veulent dire paresseux et gourmand dans le contexte des expressions régulières?

Quelqu'un pourrait-il expliquer ces deux termes de manière compréhensible?

798voto

Jonathan Sampson Points 121800

Gourmande va consommer autant que possible. À partir de http://www.regular-expressions.info/repeat.html nous voyons l'exemple de d'essayer de faire correspondre les balises HTML avec <.+>. Supposons que vous disposez des éléments suivants:

<em>Hello World</em>

Vous pouvez penser que l' <.+> (. signifie rien et + signifie répétée) ne correspondent à l' <em> et de la </em>, alors qu'en réalité il sera très gourmand, et à partir de la première < au dernier >. Cela signifie qu'il va correspondre <em>Hello World</em> au lieu de ce que vous vouliez.

Rendant paresseux (<.+?>) de l'en empêcher. En ajoutant l' ? après le + et, nous le disons à répéter que peu de fois que possible, de sorte que la première > il s'agit dans l'ensemble, est l'endroit où nous voulons arrêter la recherche.

Je vous encourage à télécharger RegExr, un excellent outil qui vous aidera à explorer les Expressions Régulières - je l'utiliser tout le temps.

68voto

Carl Norum Points 114072

Greedy signifie que votre expression correspondra à un groupe aussi large que possible, ce qui signifie qu'elle correspondra au plus petit groupe possible. Pour cette chaîne:

 abcdefghijklmc
 

et cette expression:

 a.*c
 

Un match gourmand correspondra à la chaîne entière et une correspondance paresseuse correspondra uniquement au premier abc .

10voto

astander Points 83138

De l' expression régulière

Les quantificateurs standard dans les expressions régulières sont gourmands, ce qui signifie qu'ils correspondent le plus possible, ne rendant que ce qui est nécessaire pour correspondre au reste de l'expression rationnelle.

En utilisant un quantificateur paresseux, l'expression tente d'abord la correspondance minimale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X