No regex Emacs, \n não “corresponde a um caractere de nova linha \n.
- Estou correto que
$corresponde à posição entre um caractere de nova linha e o caractere logo antes do caractere de nova linha. para uma stringabc\n,$corresponde à posição entrece\n? - Qual é o regex que corresponde a
\n?
Comentários
Resposta
- Sim.
$corresponde ao final da linha , não ao caractere de nova linha que vem após o final da linha. - Faça
C-M-s C-q C-j.C-qé a ligação padrão paraquoted-inserte também funciona no minibuffer. Esta expressão pesquisa literalmente por uma nova linha:C-j.
Comentários
- 2. você está dizendo que o caractere de nova linha não pode ser representado como uma sequência de escape no regex do Emacs?
- Quer procurando por uma nova linha interativamente ou via elisp (por exemplo,
(looking-at "^J")onde ^ J é inserido porC-q C-j), a abordagemC-q C-jsempre funciona. Mas ao usar funções elisp como o mesmo,looking-at\ntambém funciona;M-: (looking-at "\n") RETserá avaliado como verdadeiro se o cursor estiver no final da linha (e houver ' uma nova linha depois disso). - Apenas para mencionar, se usar
regexp-builder, você ' será capaz de reconhecer uma nova linha com[\n]. - @Nsukami_: CMs e Mx ocorrem ambos correspondem
[\n]an.
Resposta
Conforme comentários de Dan, o regex que corresponde a uma nova linha é uma nova linha .
Você pode representar uma nova linha em uma string entre aspas no elisp como "\n". Não há sintaxe específica de regexp adicional especial para isso – você apenas usa uma nova linha, exatamente como qualquer outro caractere literal.
Se você estiver inserindo uma regexp interativamente então você pode inserir a nova linha com Cq Cj , como indica a resposta de kaushalmodi.
Comentários
- Obrigado! No emacs (não no elisp), Cq Cj é a única maneira de corresponder a um caractere de nova linha?
\ndoesn ' t corresponde a um caractere de nova linha. - Sim. Bem, mais especificamente, digitar uma nova linha é a única maneira de corresponder a um caractere de nova linha ao inserir um regexp interativamente (já que não há sequência de escape regexp para uma nova linha) e
C-q C-jé a maneira mais confiável de digitar uma nova linha em um prompt.
(re-search-forward "\n")funciona bem para mim.abc\r\nem vez deabc\n.\nparan. meu buffer está no modo Fundamental. Isso acontece com qualquer texto, portanto, qualquer texto com nova linha ou letrané um exemplo prático\r\npararn