#1 Le 13/12/2008, à 14:18
- poupougnac
Incompréhension d'une regex (expression régulière)
Bonjour à tous,
je souhaite faire un regex pour récupérer des liens sur mes pages. J'en ai un qui marche, mais que je ne comprend pas
Le voici:
#<a href="(.*?)"(.*?)>(.*?)</a>#is
Je ne comprend simplement pas pourquoi à la place de (.*?), un (.*) ne marcherait pas tout autant (car j'ai essayé ça ne marche pas).
D'après wikipedia sur les REGEX: .http://fr.wikipedia.org/wiki/Expression_rationnelle
. permet n'importe quel caractère
* signifie 0, une ou plusieurs fois
? signifie 0 ou une fois
Dernière modification par poupougnac (Le 13/12/2008, à 17:18)
Hors ligne
#2 Le 13/12/2008, à 18:19
- Link31
Re : Incompréhension d'une regex (expression régulière)
.*? est la syntaxe "non-greedy" de Perl (ou PCRE). Ça permet en gros de s'arrêter à la première occurrence de ce qui suit, plutôt qu'à la dernière occurrence.
"(.*?)" est plus ou moins l'équivalent de "([^"]*)", mais la syntaxe de PCRE permet entre autres plus de possibilités d'imbrication.
Hors ligne
#3 Le 14/12/2008, à 00:12
- poupougnac
Re : Incompréhension d'une regex (expression régulière)
merci pour ton explication!
Hors ligne