Emacs: query-replace, expressão regular, reutilização do resultado da pesquisa

2

Como eu combino algo como query-replace com uma pesquisa e substituição de expressão regular que, em parte, reutiliza o resultado da pesquisa?

No meu caso, como transformar

The programmers are "sort of" confident that the subroutines "load_students" and "compute_student_grade" are without bugs.

em

The programmers are "sort of" confident that the subroutines \texttt{load_students} and \texttt{compute_student_grade} are without bugs.

Eu poderia usar dois query-replace e, em seguida, martelar sim e não, mas parece lento para um documento grande. Além disso, pensei em incluir o espaço em branco nas pesquisas (um  " e um , mas isso não funcionaria em casos como ... that's not the way to use "load_students", rather ...

Existe algum material embutido para isso ou você escreve código Elisp?

    
por Emanuel Berg 29.05.2012 / 22:08

1 resposta

5

Você pode usar query-replace-regexp assim:

M-x query-replace-regexp RET
\"\([^[:space:]]+\)\" RET
\texttt{} RET

A string de consulta pode ser lida como: corresponde uma sequência de um ou mais caracteres não espaciais ao grupo de correspondência 1 (os parênteses são para agrupamento), tudo isso entre aspas.

O na cadeia de substituição insere o agrupamento de correspondências.

A barra invertida dupla antes de texttt é para escapar do caractere de barra invertida da interpretação.

Se, em vez disso, o que você deseja corresponder for apenas símbolos de várias palavras com sublinhados, será necessário alterar a sequência de correspondência para algo como \(\w+_\w+\)

    
por 29.05.2012 / 23:00