Journal regex-wordsearch : Faire une recherche dans le dictionnaire par expression régulière

31
6
déc.
2019

Les expressions régulières sont un outil très pratique pour rechercher un texte correspondant à un certain motif. Elles sont très connues et leur usage est très répandu parmi les programmeurs, et les informaticiens en général. Cependant, et je pense que c'est dommage, elles ne sont pas enseignées à l'école, et sont assez peu connues de la population générale des utilisateurs de l'outil informatique.

Récemment, ma compagne a été chargée d'une nouvelle mission. Elle doit déchiffrer et traduire du russe en français les notes personnelles écrites par une chorégraphe du début du vingtième siècle. L'écriture étant vraiment difficile à déchiffrer, le travail devient parfois un jeu de devinettes, où à partir de quelques lettres compréhensibles et du contexte, il faut deviner un mot. Par exemple, on arrive à déchiffrer un т au début du mot, et les lettres ело à la fin, mais impossible de comprendre les deux lettres du milieu. Rechercher un mot qui pourrait correspondre est très fastidieux avec un simple dictionnaire, mais très facile lorsque l'on connaît les expressions régulières.

J'ai donc eu une idée très simple: faire une toute petite application web dans laquelle on peut chercher un mot dans un dictionnaire par expression régulière. Une petite soirée de travail plus tard, regex-wordsearch est né. Ma compagne en est très contente, et l'application est simplissime : on entre une expression régulière, on choisit un dictionnaire dans lequel faire la recherche, et choisit si on veut faire la recherche à l'intérieur du mot, ou si le mot complet doit correspondre au motif entré:

Capture d'écran

L'application est publiée sous licence BSD sur github, et une version en ligne est disponible à l'adresse suivante: https://regex-wordsearch.netlify.com/

J'espère qu'elle pourra vous être utile à vous aussi !

  • # sympa

    Posté par  . Évalué à 5.

    Cela peut être utile. Il faudrait un petit texte pour expliquer quelle sorte de regexp tu utilises, je n'ai pas trouvé.

    Il faudrait aussi mémoriser les options entre 2 recherches, repasser en français à chaque fois est chiant.

    "La première sécurité est la liberté"

    • [^] # Re: sympa

      Posté par  . Évalué à 2.

      +1 pour la mémorisation

      En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: sympa

      Posté par  . Évalué à 2.

      Voilà, c'est fait :) Il y a maintenant un paramètre dans l'URL pour la langue. On peut charger directement le dictionnaire français avec: https://regex-wordsearch.netlify.com/?lang=fr

  • # Très marrant pour chercher des noms de domaine

    Posté par  . Évalué à 2.

    En cherchant les mots Français terminant par EU (regexp .*eu, whole word sélectionné, et FR) je suis tombé sur une incohérence de ton dictionnaire, j'ai toute la conjugaison du verbe 'rechapper pneu' qui est m'arrivé :)

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

  • # Outils similaire

    Posté par  . Évalué à 2.

    https://thewordsword.com qui donne plus d'options pour la recherche
    il y a aussi dcode.fr via https://www.dcode.fr/word-search-regexp mais le site manque de simplicité…

  • # grep

    Posté par  (site Web personnel) . Évalué à 10. Dernière modification le 06/12/19 à 13:19.

    Pour des besoins occasionnels, j'utilise grep sur les dictionnaires disponibles dans /usr/share/dict.

    Par exemple :

    $ grep '^m...u$' /usr/share/dict/french
    matou
    merlu
    mérou
    miaou
    minou
    mordu
    moulu
    moyeu
    

    blog.rom1v.com

  • # Svelte

    Posté par  . Évalué à 8.

    Moi et le web on est pas pote, surtout depuis l'invasion du JavaScript que l'on sert à la louche dans toute page qui se veut un tant soit peu interactive, sans aucun raffinement et souvent en prenant l'artillerie lourde pour mettre en place une fonctionnalité des plus simplistes.

    Et pourtant, depuis que j'ai été introduit à Svelte j'ai une envie furieuse de trouver un projet qui me permettrait de l'exploiter.

    Pour les curieux, voici une présentation par son auteur Rich Harris.

    Est ce que tu pourrais nous expliquer pourquoi tu as choisis ce framework ?

    Ce commentaire passe-t-il les trois tamis de Socrate ? -- je ne moinsse pas les conversations auxquelles je participe

    • [^] # Re: Svelte

      Posté par  . Évalué à 8.

      J'adore la simplicité de svelte. Une petite présentation de ce framework serait très intéressante; que pensez-vous d'écrire une dépêche collective ?

      • [^] # Re: Svelte

        Posté par  . Évalué à 2.

        Cela serait une bonne idée: je n'ai fait que regarder des présentations et lire le tutorial, donc je n'ai pas l'expérience "cambouis" pour pouvoir construire la dépêche, mais je contribuerai volontiers.

        Ce commentaire passe-t-il les trois tamis de Socrate ? -- je ne moinsse pas les conversations auxquelles je participe

        • [^] # Re: Svelte

          Posté par  . Évalué à 3.

          Question bête : est-ce que svelte a des dépendances au runtime ? React pour être inclus tel quel à besoin d'un script react, mais évidement impossible d'avoir 2 script react de version différente.

          Le code généré par svelte semble complètement indépendant, est-ce le cas ?

          "La première sécurité est la liberté"

          • [^] # Re: Svelte

            Posté par  . Évalué à 1.

            Oui, C'est bien ça : svelte est un compilateur qui génère un code JavaScript qui lui-même n'a pas de dépendances.

            • [^] # Re: Svelte

              Posté par  . Évalué à 3.

              mais est-ce que le code généré peut être injecté dans un site existant sans que le code cherche à "prendre le contrôle" ?

              "La première sécurité est la liberté"

              • [^] # Re: Svelte

                Posté par  . Évalué à 1.

                Oui, parfaitement. On peut très bien créer un composant en svelte dans une page plus grande qui utilise un autre framework d'interface utilisateur, ou pas de framework du tout.

                La solution la plus basique est juste de "monter" son application à l'intérieur d'un certain élément de la page cible:

                import App from './App.svelte';
                const target = document.querySelector('#my-element');
                const app = new App({ target });

                Si l'on veut générer un composant réutilisable, on peut créer un "composant web" (custom element, ou web component): svelte a une API pour cela.
                On pourra alors utiliser cet élément depuis un autre framework. Le support des composants web varie selon les frameworks, react étant un mauvais élève.

  • # et pour les poètes

    Posté par  (site Web personnel) . Évalué à 3.

    Merci!, sympa jamais pensé à utiliser un truc pareil.

    Et pour les poètes il te reste deux minuscules détails à implémenter, ajouter une recherche par phonème et donc… inveter un language rexexp phonème (son /ɑ/$ mais pas /p/ … ouaa ouaa ça va être d'une lisibilité particulière)

    • [^] # Re: et pour les poètes

      Posté par  . Évalué à 3.

      ça doit être faisable assez simplement. Dans wikipedia et wiktionnaire il y a quasiment toutes les prononciations. Si l'on arrive à en sortir une liste de couples (mot, prononciation) il suffit de faire une regexp normale sur les prononciations et tu obtiens les mots.

      Non ?

  • # Utile

    Posté par  . Évalué à 2. Dernière modification le 07/12/19 à 09:41.

    Ca pourra m'être utile, merci!

    arnaud

  • # Dans la même veine

    Posté par  . Évalué à 0.

    Hello,

    dans le même type je recommande

    Regex101

    exemple

    • [^] # Re: Dans la même veine

      Posté par  . Évalué à 1.

      L'outil Regex101 est intéressant, mais je pense qu'il n'a pas le même but et qu'il ne s'adresse pas au même public.
      Le but principal de l'outil présenté dans ce journal est de chercher dans mots dans le dictionnaire.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.