Aller au contenu

Sujets conseillés

Posté

Bonjour à tous,

je suis un grand débutant en expression régulière, et j'ai un souci :

je souhaite remplacer dans un mot un s en z s'il est entouré de voyelle.

Pour l'instant, j'ai fait ça : $Word = preg_replace( '`(?<=[AOIEU])S(?<![AOIEU])`', 'Z', $Word )

mais ça ne marche pas (du moins, ça prend aussi en compte le s suivi d'une consonne :( )

Si une âme charitable pouvait m'aider ?

merci d'avance

Posté

Salut,

Je t'ai fait ça vite fait (c'est fait à l'arrache, je ne garantis rien) :

$motif = "|([aeiou])s([aeiou])|";
$remplace = "$1" . "z" . "$2";
$str = "salut isabelle pas trop de pression sur ton issue isothermique asynchrone assassine disposante ?";
$str2 = preg_replace($motif, $remplace, $str);
echo ("$str<br />$str2");

Et ça donne ça :

salut isabelle pas trop de pression sur ton issue isothermique asynchrone assassine disposante doseuse ?
salut izabelle pas trop de pression sur ton issue izothermique asynchrone assassine dispozante dozeuze ?

Le motif : une voyelle suivie d'un s suivi d'une voyelle, le tout entre délimiteurs

Le remplacement : la première expression (la première voyelle) suivie d'un z suivi de la 2ème expression (la 2ème voyelle)

Posté

Bonsoir,

Si on parle de voyelles, il me semble qu'il faudrait y inclure Y : asynchrone => azynchrone.

Jean-Luc

Posté

Non parce qu'a mon avis c'est une histoire de sonorité, le s se prononce z quand il est entre deux voyelles sauf pour le y

Posté

On s'écarte de la question des regexp, mais comment prononces-tu "analyse" ou "paysan" ? Et il y a des exceptions avec d'autres voyelles, comme "asexué". Bon amusement, pour construire la regexp pour tous ces cas !

Jean-Luc

Posté

c'est vrai qu'il y a des exceptions avec le y, mais je pense qu'il y a plus de mot ou le s ne devient pas z en présence d'un Y, du moins il m'en vient plus à l'esprit...

sinon le but final est de faire un soundex personnalisé pour les sonorités françaises.

En effet, dans les algo de soundex que j'ai trouvé, la première chose qui est faite, c'est de supprimer toutes les voyelles sauf la première du mot si c'est un A.

Mais dans ce cas, l'algo va trouver par exemple que "curé" et "carré" sont identiques, alors que mon but est plutôt de régler les problèmes de fautes d'orthographes. Ex : le gars recherche philippe mais il tape filipe etc

Bien sûr, mon algo ne prendra jamais en compte toutes les exceptions de la langue française (du moins il ne serait pas rentable en terme de temps pour moi d'essayer de le faire), sans compter tous les mots anglais, ou même à consonance germanique du côté de nos amis alsaciens.

mais bon je pense arriver quand même à un petit quelque chose, je vous tiendrai au courant !

@++

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...