Como você usa mais de 9 grupos de captura de regex no emacs?

6

Eu estou tentando transformar uma seqüência bastante longa de valores em um formato diferente, usando o comando replace-regex do emacs. Existem mais de 9 valores para extrair, portanto, as referências back de \ 1 - \ 9 não são suficientes.

Como posso voltar a referenciar mais de 9 grupos de captura no emacs? Grupos nomeados podem ser usados? Se sim, como?

    
por Erik Öjebo 02.05.2011 / 21:40

1 resposta

7

Desde o Emacs 23, você pode incluir o código Lisp em um texto de substituição de expressão regular . Isso lhe dá uma maneira de usar mais referências anteriores. A função match-string retorna os backreferences numerados.

 …  \,(or (match-string 10) "")

Desde o Emacs 22, se houver algum grupo entre parênteses no regexp para o qual você não precise ter uma referência anterior, use \(?:…\) (o Emacs chama isso de shy group ).

    
por 03.05.2011 / 01:01

Tags