J'essaie de construire une expression régulière qui correspondrait à des symboles, c'est-à-dire à des choses comme les noms de fonction et autres, selon les paramètres actuels du mode principal (cela s'appelle une table de syntaxe si je me souviens bien). Après quelques recherches, j'ai trouvé ces expressions rationnelles utiles:
\_<
correspond au début d'un symbole\_>
correspond à la fin d'un symbole
Maintenant, je pense que je dois découvrir comment représenter le caractère constituant un symbole. Nous avons \w
pour les caractères constitutifs des mots, mais je ne trouve rien pour les symboles. L'expression régulière pour faire correspondre les symboles devrait être quelque chose comme (en supposant que les \s
correspondances sur les caractères constitutifs des symboles):
\_<\s+\_>
Suis-je en train de manquer quelque chose? Comment faire correspondre les symboles?
Notez que l'appariement des mots ne fonctionne pas pour moi. Un exemple trivial est quelque chose comme foo-bar
ça est un symbole en mode Emacs Lisp, mais pas un mot (car ce -
n'est pas un caractère constituant un mot).
\s
que cela signifie réellement, car il est entièrement différent de votre hypothèse.
\s
avait un sens dans les expressions rationnelles Emacs, je viens de choisir ce symbole par exemple.
(re-search-forward "\\_<\\(?:\\sw\\|\\s_\\)+\\_>" nil t)
. Cela fonctionne, mais je me demande s'il existe un moyen plus court.