Bonjour je ne comprend pas quel est la différence entre .*? et .*
car * et ? sont tout deux des quantificateur
qu'est ce que le ? apporte de plus a cette expression .*?
merci d'avance
Bonjour je ne comprend pas quel est la différence entre .*? et .*
car * et ? sont tout deux des quantificateur
qu'est ce que le ? apporte de plus a cette expression .*?
merci d'avance
Bonjour,
A moins de limité le *, je ne vois pas a quoi cela sert, même pourquoi limité le *
Tu as vu ça dans quel cadre ?
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
je voulais faire un replace de se qui se trouve entre /* */ par string.empty
et quand j ' ai plusieurs notreplace/*Content*/ dans la chaine et que j' utilise .* il va faire un remove sur tout sauf se qui est devant le premier
il ne garde que le premier des notreplace, donc j ai été contrain de faire ceci dans ma regex .*?
Alors cela veut dire qu'il prend la fin
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
ces pour cela qu il faut limiter * si je comprend bien
le ? représente la fin de la chaine, donc oui
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
le "?" la fin de chaine ???? c'est "$" la fin de chaine !!!!
la différence entre * et *? est je crois que la première version va essayer de matcher avec le pattern qui comporte le plus de caractère alors que le second va essayer de matcher avec le motif qui en comporte le moins.*
pour aller plus loin cherche regex+lazy et regex+greedy.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 preg_match_all('#a.*?a#', 'amanapa', $arr, PREG_PATTERN_ORDER); preg_match_all('#a.*a#', 'amanapa', $arr, PREG_PATTERN_ORDER);
MaitrePylos -1.
PHP fait nativement la validation d'adresse électronique .
Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.
Utilisez le bouton résolu!
Oui,oui me suis trompé. Arrive a tout le monde.
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
OK je vous remercie pour vos réponse
Éffectivement, le ? sert à passer un quantificateur (* + {n,}) de greedy à non-greedy par défaut. Mais il sert aussi à faire le contraire (non-greedy->greedy) si on utilise le modifier U qui rend tous les quantificateurs de la pattern non-greedy. De plus, il peut être inopérant selon les circonstances.
exemple:On obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $string = 'Janine mange des bananes.'; // cette chaîne comporte la sous-chaîne "an" deux fois de part et d'autre de la lettre g $patterns = array( // avec les quantificateurs greedy (par défaut) '/[^g]*(an[^g]*g.*an)/', '/^[^g]*?(an[^g]*g.*an)/', '/^[^g]*(an[^g]*g.*?an)/', '/^[^g]*?(an[^g]*g.*?an)/', // avec les quantificateurs non-greedy (par le modifier U) '/^[^g]*?(an[^g]*g.*?an)/U', '/^[^g]*(an[^g]*g.*?an)/U', '/^[^g]*?(an[^g]*g.*an)/U', '/^[^g]*(an[^g]*g.*an)/U' ); // le quantificateur du milieu peut être greedy ou non-greedy, // cela n'a pas d'importance, car il est coincé à droite par la lettre g et obligé d'aller jusqu'à elle, // et à gauche par le premier quantificateur qui est évalué avant lui. // C'est le premier quantificateur qui, évalué en premier, conditionne la taille de la capture à gauche du g. // Le test s'effectue uniquement sur le premier et le dernier quantificateur. foreach ($patterns as $pattern) { preg_match( $pattern, $string, $match); echo $match[1] . '<br/>'; }
ange des banan
anine mange des banan
ange des ban
anine mange des ban
ange des banan
anine mange des banan
ange des ban
anine mange des ban
À ce titre le ? peut être plutôt considéré comme un commutateur greedy/non-greedy.
Brachygobius xanthozonus
Ctenobrycon Gymnocorymbus
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager