Estou tentando construir uma expressão regular que corresponda a símbolos, ou seja, coisas como nomes de funções e afins, de acordo com as configurações atuais do modo principal (é chamada tabela de sintaxe, se bem me lembro). Após alguma investigação, encontrei esses regexps úteis:
\_<
corresponde ao início de um símbolo\_>
corresponde ao final de um símbolo
Agora acho que preciso descobrir como representar o caráter constituinte do símbolo. Temos \w
para caracteres constituintes da palavra, mas não consigo encontrar nada para símbolos. Regexp para corresponder aos símbolos deve ser algo como (assumindo que \s
correspondências nos caracteres constituintes do símbolo):
\_<\s+\_>
Estou esquecendo de algo? Como combinar símbolos?
Observe que a correspondência de palavras não funciona para mim. Exemplo trivial é algo assim: foo-bar
é um símbolo no modo Emacs Lisp, mas não uma palavra (porque -
não é um caractere constituinte da palavra).
fonte
(re-search-forward "\\_<\\(?:\\sw\\|\\s_\\)+\\_>" nil t)
. Funciona, mas me pergunto se há um caminho mais curto.\s
realmente significa, pois é totalmente diferente da sua suposição.\s
tinha algum significado nos regexps do Emacs, apenas escolhi esse símbolo, por exemplo.Respostas:
O que há de errado
\_<.*?\_>
?fonte