En Emacs regex, \n
no «coincide con un carácter de nueva línea \n
.
- Estoy en lo correcto en que
$
coincide con la posición entre un carácter de nueva línea y el carácter justo antes del carácter de nueva línea. para una cadenaabc\n
,$
coincide con la posición entrec
y\n
? - ¿Cuál es la expresión regular que coincide con
\n
?
Comentarios
Respuesta
- Sí.
$
coincide con el final de la línea , no con el carácter de nueva línea que viene después del final de la línea. - Haz
C-M-s C-q C-j
.C-q
es el enlace predeterminado paraquoted-insert
y también funciona en el minibúfer. Esta expresión busca literalmente una nueva línea:C-j
.
Comentarios
- 2. ¿Estás diciendo que el carácter de nueva línea no se puede representar como una secuencia de escape en Emacs regex?
- Ya sea buscando una nueva línea de forma interactiva o mediante elisp (por ejemplo,
(looking-at "^J")
donde ^ J se inserta conC-q C-j
), el enfoqueC-q C-j
siempre funciona. Pero cuando se utilizan funciones de elisp como la mismalooking-at
\n
también funciona;M-: (looking-at "\n") RET
se evaluará como verdadero si el cursor está al final de la línea (y hay ' una nueva línea después de eso). - Solo por mencionar, si usa
regexp-builder
, ' podrá reconocer una nueva línea con[\n]
. - @Nsukami_: CM y Mx coinciden con
[\n]
conn
.
Responder
Como comenta Dan, la expresión regular que coincide con una nueva línea es una nueva línea .
Puede representar una nueva línea en una cadena entre comillas en elisp como "\n"
. No hay una sintaxis específica de regexp adicional especial para esto; solo usa una nueva línea, exactamente como cualquier otro carácter literal.
Si está ingresando una regexp de forma interactiva entonces puede insertar la nueva línea con Cq Cj , como señala la respuesta de kaushalmodi.
Comentarios
- ¡Gracias! En emacs (no en elisp), ¿es Cq Cj la única forma de hacer coincidir un carácter de nueva línea?
\n
doesn ' t coincidir con un carácter de nueva línea. - Sí. Bueno, más específicamente, escribir una nueva línea es la única forma de hacer coincidir un carácter de nueva línea al ingresar un regexp de forma interactiva (ya que no hay una secuencia de escape de regexp para una nueva línea), y
C-q C-j
es la forma más confiable de escribir una nueva línea en un indicador.
(re-search-forward "\n")
funciona bien para mí.abc\r\n
en lugar deabc\n
.\n
an
. mi búfer está en modo fundamental. Esto le sucede a cualquier texto, por lo que cualquier texto con una nueva línea o letran
es un ejemplo funcional\r\n
arn