Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

regexp les petits mots accentues

3 réponses
Avatar
newdb
bonjour,

je bute sur une regexp que je n'arrive pas à définir/mettre en oeuvre.

à partir d'une phrase du type (hors « ») :
«façade néo molière d'el "niño" <ou> 495 ; naïve tschüß 806,19 (mao)
l'éléphant : à l'eau ! où ? -ici.»

je souhaiterai récupérer les seuls 'mots' de 3 lettres :
néo, mao, eau, ici

pour les transformer en :
_néo, _mao, _eau, _ici

et les réintégrer à leur place après avoir supprimé tous les caractères
non alphanumériques pour arriver à :
«façade _néo molière niño 495 naïve tschüß 806,19 _mao éléphant _eau
_ici»

pour l'instant, j'arrive à supprimer les caractères indésirables avec :
$etape = preg_replace('/[^\w\xc0-\xfd]+/', ' ', $depart);
qui me donne :
«façade néo molière d el niño ou 495 naïve tschüß 806 19 mao l éléphant
à l eau où ici »

pour le reste, je sèche :-(

merci pour les pistes.

--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|\_ =="

3 réponses

Avatar
P'tit Marcel
je bute sur une regexp que je n'arrive pas à définir/mettre en oeuvre.
je souhaiterai récupérer les seuls 'mots' de 3 lettres :
néo, mao, eau, ici

pour les transformer en :
_néo, _mao, _eau, _ici



Tu dois pouvoir t'en sortir avec une assertion, genre :
$chaine_modifiee = preg_replace('`b([^dW]{3})b`', '_$1', $chaine)


eça
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/

Avatar
newdb
P'tit Marcel wrote:
je bute sur une regexp que je n'arrive pas à définir/mettre en oeuvre.
je souhaiterai récupérer les seuls 'mots' de 3 lettres :
néo, mao, eau, ici
pour les transformer en :
_néo, _mao, _eau, _ici
Tu dois pouvoir t'en sortir avec une assertion, genre :

$chaine_modifiee = preg_replace('`b([^dW]{3})b`', '_$1', $chaine)


merci de ta réponse.

malheureusement, ça ne fonctionne pas pour mon cas.
par exemple, transforme "façade " en "faç_ade "..

j'ai tourné, retourné, mouliné dans tous les sens pour en arriver
finalement...

...à résoudre mon problème différemment.

je cherche à bâtir un index pour une recherche fulltext dans mysql qui
'bypasserait' sa limite d'indexation aux mots de 4 lettres minimum (sans
toucher à la configuration de base : donc pour certains mots de 3
lettres seulement).

je ne sais si ça intéresse le forum, mais je peux mettre ma méthode à
disposition.

--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|_ =="


Avatar
Olivier Miakinen

Tu dois pouvoir t'en sortir avec une assertion, genre :
$chaine_modifiee = preg_replace('`b([^dW]{3})b`', '_$1', $chaine)


malheureusement, ça ne fonctionne pas pour mon cas.
par exemple, transforme "façade " en "faç_ade "..


Parce que tu dois ajouter à la regexp la liste de toutes les lettres
avec diacritiques. La façon de le faire dépend à la fois de la table
de caractères utilisée (en particulier table 8 bits ou UTF-8) et de
l'ensemble des caractères qui t'intéressent.

j'ai tourné, retourné, mouliné dans tous les sens pour en arriver
finalement...

...à résoudre mon problème différemment.


Ok.

je ne sais si ça intéresse le forum, mais je peux mettre ma méthode à
disposition.


Je laisse la parole aux autres, personnellement je n'en ai pas besoin.