JeuWeb - Crée ton jeu par navigateur
[Résolu] Conception d'une regex - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Conception d'une regex (/showthread.php?tid=5375)



[Résolu] Conception d'une regex - Holy - 12-04-2011

Bonjour,

J'ai un p'tit soucis dans la conception d'une regex qui, à priori, a l'air plutôt simple.

Voilà l'intitulé exacte de ma regex :
Transformer 'eu' en 'oe' à l'intérieur de la chaine (donc 'eu' ne peut se trouver ni au début, ni à la fin de la chaine). En sachant qu'il peut y avoir plusieurs 'eu' au sein de cette chaine.

Exemple : heureux deviendrait hoeroex, heure deviendrait hoere, euheuheu deviendrait euhoeheu (début de chaine et fin de chaine).

Jusqu'ici je n'arrive à en changer qu'un seul des 'eu' de heureux !

Si vous pouvez m'filer un p'tit coup de pouce, j'suis preneur Tongue

Holy

Ps : j'insiste pour que la solution se fasse via Regex ^^


RE: Conception d'une regex - Sephi-Chan - 12-04-2011

Il suffit normalement d'ajouter le flag G à ta Regexp.
Montre-nous le code que tu as pour le moment.


RE: Conception d'une regex - Holy - 12-04-2011

Ma regex ressemble à ça :
Code :
<?php

$sWord = preg_replace('#([^eu]+)(eu)+([^eu]+)#u', '$1oe$3', 'heureux');

?>

Edition : au fait, le flag 'G' existe pas sous PCRE.


RE: Conception d'une regex - niahoo - 12-04-2011

J'ai trouvé un truc

Code :
php > echo preg_replace('/(?=\B)eu(?=\B)/', '$1xx$2', 'euheukeuheu');
euhxxkxxheu



RE: Conception d'une regex - Holy - 12-04-2011

(12-04-2011, 05:10 PM)niahoo a écrit : J'ai trouvé un truc

Code :
php > echo preg_replace('/(?=\B)eu(?=\B)/', '$1xx$2', 'euheukeuheu');
euhxxkxxheu
Impec !

Un tout grand merci à toi. So easy :o


RE: [Résolu] Conception d'une regex - niahoo - 12-04-2011

du coup on peut virer les $

Code :
preg_replace('/(?=\B)eu(?=\B)/', 'xx' …

mais c'était pas si "easy"

Code :
php -a
Interactive shell

php > echo preg_replace('#^.+(eu).+$#', 'xx', 'euheuheu');
xx
php > echo preg_replace('#^.+(eu).+$#uG', 'xx', 'euheuheu');

Warning: preg_replace(): Unknown modifier 'G' in php shell code on line 1
php > echo preg_replace('#^.+(eu).+$#u', 'xx', 'euheuheu');
xx
php > echo preg_replace('#^(.+)(eu)(.+)$#u', '$1xx$3', 'euheuheu');
euhxxheu
php > echo preg_replace('#^(.+)(eu)(.+)$#u', '$1xx$3', 'euheukeuheu');
euheukxxheu
php > echo preg_replace('#(.+)(eu)(.+)#u', '$1xx$3', 'euheukeuheu');
euheukxxheu
php > echo preg_replace('#.+(eu).+#u', '$1xx$3', 'euheukeuheu');
euxx
php > echo preg_replace('#(.+)(eu)(.+)#u', '$1xx$3', 'euheukeuheu');
euheukxxheu
php > echo preg_replace('#(.+)(eu)(.+)#u', 'xx', 'euheukeuheu');
xx
php > echo preg_replace('/eu/u', 'xx', 'euheukeuheu');
xxhxxkxxhxx
php > echo preg_replace('/(.+)eu(.+)/u', '$1xx$2', 'euheukeuheu');
euheukxxheu
php > echo preg_replace('/(.+)eu(.+)/m', '$1xx$2', 'euheukeuheu');
euheukxxheu
php > echo preg_replace('/(.+)eu(.+)/msi', '$1xx$2', 'euheukeuheu');
euheukxxheu
php > echo preg_replace('/(.+)eu(.+)/msiUM', '$1xx$2', 'euheukeuheu');

Warning: preg_replace(): Unknown modifier 'M' in php shell code on line 1
php > echo preg_replace('/eu/msiU', '$1xx$2', 'euheukeuheu');
xxhxxkxxhxx
php > echo preg_replace('/eu/B', '$1xx$2', 'euheukeuheu');

Warning: preg_replace(): Unknown modifier 'B' in php shell code on line 1
php > echo preg_replace('/eu/b', '$1xx$2', 'euheukeuheu');

Warning: preg_replace(): Unknown modifier 'b' in php shell code on line 1
php > echo preg_replace('/eu//b', '$1xx$2', 'euheukeuheu');

Warning: preg_replace(): Unknown modifier '/' in php shell code on line 1
php > echo preg_replace('/eu(?=\B)/', '$1xx$2', 'euheukeuheu');
xxhxxkxxheu
php > echo preg_replace('/(?!\B)eu(?=\B)/', '$1xx$2', 'euheukeuheu');
xxheukeuheu
php > echo preg_replace('/(?=\B)eu(?=\B)/', '$1xx$2', 'euheukeuheu');
euhxxkxxheu
php > echo preg_replace('/(?=\B)eu(?=\B)/', 'xx', 'euheukeuheu');
euhxxkxxheu
php > echo preg_replace('/(?=\B)eu(?=\B)/', 'xx', ' qzdq qzdkkkqdz jk euheukeuheu qzdd   ,qzdueuiqsefioquioeruioqefj< eqeriuei');
qzdq qzdkkkqdz jk euhxxkxxheu qzdd   ,qzduxxiqsefioquioeruioqefj< eqeriuei
php >