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 entrec
e\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-insert
e 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-j
sempre funciona. Mas ao usar funções elisp como o mesmo,looking-at
\n
também funciona;M-: (looking-at "\n") RET
será 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?
\n
doesn ' 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\n
em vez deabc\n
.\n
paran
. meu buffer está no modo Fundamental. Isso acontece com qualquer texto, portanto, qualquer texto com nova linha ou letran
é um exemplo prático\r\n
pararn