4 votes

Analyse du texte à l'aide d'expressions régulières

J'ai un dictionnaire au format .txt, qui ressemble à ceci :

term 1
    definition 1
    definition 2

term 2
    definition 1
    definition 2
    definition 3
etc.

Il y a toujours un onglet avant une définition, en gros c'est comme ça :

term 1
[tab]definition 1
[tab]definition 2
etc.

Maintenant, je dois entourer chaque terme et ses définitions de <term> c'est-à-dire

<term>
term 1
    definition 1
    definition 2
</term>

J'ai essayé d'utiliser des expressions régulières pour trouver des termes avec leurs définitions, mais sans succès. Pourriez-vous m'aider ?

Merci de vos suggestions !

0voto

Gumbo Points 279147

Essayez cette expression régulière :

(^|\n).+(\n[ \t]+.+)*

En supposant que ^ marque le début de la chaîne, \n est le caractère de saut de ligne et . ne correspond pas aux sauts de ligne.

0voto

Jakob Borg Points 10869

Dans l'hypothèse d'une mise en œuvre qui

  1. Recherche de plusieurs lignes ( /.../m )
  2. Utilisations \A pour indiquer le début d'une ligne

cela devrait correspondre à un "terme" :

\A[^\t][^\n]+\n(\t[^\n]+\n)+

0voto

Greg Bacon Points 50449

Correspond à une ligne avec un caractère de tête sans espace blanc suivi d'une ou plusieurs lignes avec des TAB de tête :

$ perl -0077 -pe 's/^(\\S.+\\n(^\\t.+\\n)+)/<term>\\n$1<\\/term>\\n/mg' dict
<term>
term 1
        definition 1
        definition 2
</term>

<term>
term 2
        definition 1
        definition 2
        definition 3
</term>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X