Comment pouvez-vous extraire tous les mots latins de 6 lettres à une liste?


1

Je dois avoir tous les 6 lettre Latin words dans une liste.

Je voudrais aussi avoir des mots qui suivent le modèle Xyzzyx dans une liste.

J'ai utilisé un petit Python.

5

Les expressions régulières sont votre ami, mon ami! Est-ce que ce sont les devoirs?

Voici un exemple qui est près à ce que vous voulez:

egrep "^\w{6}$" /usr/share/dict/words | egrep "(.)(.)(.)\3\2\1" 

Je vais laisser comme un exercice pour le lecteur pour créer une liste de mots latin et de traiter avec le X majuscule dans la seconde regex , mais l'idée générale devrait être évidente.

  0

Je pensais que vous étiez son ami, pas Regex! : P 22 févr.. 092009-02-22 15:22:55

  0

Python est-il adapté pour racler les mots latins à une liste? 22 févr.. 092009-02-22 15:26:23

  0

Je suis sûr que c'est. Toute langue disposant d'un moteur d'expressions régulières intégré devrait être capable de le faire. 22 févr.. 092009-02-22 15:28:13

  0

Merci! J'ai réussi à trouver ces mots directement dans Terminal, sans Python avec votre code :) 22 févr.. 092009-02-22 18:01:14

  0

De rien! Toujours agréable quand vous pouvez trouver l'outil le plus approprié pour le travail. :-) 22 févr.. 092009-02-22 20:33:01


0

Notez qu'à moins que votre liste ne contienne toutes les conjugaisons des déclinaisons et des verbes des noms, votre programme ne produira rien comme tous les les mots de six lettres en latin.

Par exemple, votre liste ne contient probablement que le nominatif des noms. Les noms de première déclinaison dont le nominatif est de cinq lettres (par exemple mensa) ont un cas de génitif de six lettres (par exemple mensae). Toutes les déclinaisons contiennent des cas où la longueur du nom est différente de son cas nominatif.

La même chose est encore plus vraie pour les verbes, chacun ayant (au moins) quatre parties principales, qui peuvent être de longueur variable, et dont les conjugaisons peuvent également être de longueurs variables. Ainsi, le présent à la première personne du singulier du lego est de quatre lettres, mais son infinitif legere est six; porto est cinq à la première personne du singulier, mais six à la deuxième personne du singulier, portas.

Je suppose qu'il est possible en principe de construire un moteur qui décline par programmation et conjugue des mots latins avec suffisamment de métainformation pour chaque mot. Python serait en fait un très bon langage pour le faire. Mais c'est une tâche bien plus importante que d'écrire une expression régulière.