8768 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai trouvé un code pour afficher qu'un certain nombre de mots, et ce code utilise une regex PCRE mais je ne comprend pas tout et comme je n'aime pas utiliser un code bêtement sans comprendre, je viens vers vous pour m'aider à la traduire

voici la REGEX:

#(?:\w+\W+){99}\w+#s

je comprend le \w et \W (qui correspond à [a-zA-Z0-9_] et [^a-zA-Z0-9_] ) avec le + (peut y être 1 ou plusieurs fois) et puis le {99} (doit être répété 99 fois) suivit d'un \w donc [a-zA-Z0-9_]

Mais je comprend pas trop l'utilisation de l'option s et surtout le ?: au commencement.

Merci de votre aide Smiley smile
Modérateur
Salut Spawn,

De ce que j'en comprend le ?: défini un "non-capturing group" en gros ca va aider à spécifier ta capture mais sans rien capturer dans le résultat final. J'en déduis que ce code ne veut chopper que le 100eme mot d'un string. Ce qui est bizarre c'est qu'il n'y a pas pour autant un "capturing-group".... (?:\w+\W+){99}(\w+) aurait permis de chopper le 100eme mot.

Pour le # au début et le #s à la fin, aucune idée à part si ça veut dire que les 100 mots doivent être entourés d'un "#" et d'un "#s" textuellement.
Bonjour,

Le dièse de départ et de fin signifient uniquement qu'il s'agit respectivement du début et de la fin du modèle (pattern). Ils ne font pas partie des caractères recherchés.

Il me semble que /s rend insensible à la casse la recherche.
EDIT: Heu... non en fait ! C'est pour la casse.

Pour le reste, je te laisse découvrir les détails en t'invitant à consulter l'article de Lucas Willems Tutoriel pour maitriser les expressions régulières

Une autre source riche d'information serait RegExr(en anglais) qui inclus en prime un testeur en ligne de regexp.

Dans la même veine pour tester, il y a RegExpal (en anglais aussi).
Modifié par Greg_Lumiere (08 Mar 2016 - 10:02)