Lorsque vous utilisez l'opérateur not ^
en combinaison avec une référence arrière, pourquoi ai-je besoin d'utiliser une correspondance paresseuse? Il semble que le not
devrait casser le match.Pourquoi cette regex, en utilisant "not" & un backref, nécessite-t-elle une correspondance paresseuse?
Par exemple:
<?php
preg_match('/(t)[^\1]*\1/', 'is this test ok', $matches);
echo $matches[0];
?>
Will output this test
, au lieu de this t
, malgré le fait que le milieu t
ne correspond pas à [^\1]
. Je dois utiliser /(t)[^\1]*?\1/
to match this t
.
De plus
preg_match('/t[^t]*t/', 'is this test ok', $matches);
Que se passe-t-il et qu'est-ce que je ne comprends pas?
je venais ajouté cet exemple précis à ma propre réponse. Je suppose que les grands esprits se ressemblent. ;-) –
Merci, les regex m'obtiennent à chaque fois! –