OVH Cloud OVH Cloud

Expression reguliere

11 réponses
Avatar
Julduck
Bonjour a tous,

Je lutte depuis quelques jours contre une expression reguliere.
J'ai un document qui contient des balises {text} ou texte est un mot de
15 lettres maximum.
J'aimerais recuperer tous ces mots, mais je n'y arrive pas ...

J'ai essaye:
ereg( '\\{[:alpha:]+\\}', $text, $regs );
mais il ne me retourne aucune valeur.

Quelqu'un a une idee?

Julien

1 réponse

1 2
Avatar
Laurent
CrazyCat wrote:
frederic girard wrote:

Aller les gars, je vois que vous etes en forme;)
Pour info, que signifie le '/U' ?



U (PCRE_UNGREEDY) : Cette option inverse la tendance à la gourmandise
des expressions régulières. Vous pouvez aussi inverser cette tendance au
coup par coup avec un ?. De même, si cette option est activée, le ?
rendra gourmand une séquence.



Pour préciser en langage humain ;) : par défaut une expression régulière
recherche le plus grand motif possible.
par exemple, dans la réponse de Vincent, on est obligé de mettre "tout
sauf }" puis } pour dire qu'on veut s'arrêter à la première accolade fermée.
on appelle cela une expression "gourmande"

on peut la rendre non gourmande avec le paramètre U, les paramètres se
mettant entre le délimiteur et la fin de chaîne (il y en a d'autres
super pratiques, pour rendre sensible ou non à la casse, pour faire du
multi-lignes, pour rendre le "." représentant n'importe quel caractère Y
COMPRIS LE n (génial :)), etc.)
non gourmande signifie donc qu'il s'arrête dès qu'il a trouvé le motif
correspondant, donc ici - en mode non gourmand - mettre simplement un }
trouvera le bon motif.


1 2