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 entrecy\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-qes el enlace predeterminado paraquoted-inserty 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-jsiempre funciona. Pero cuando se utilizan funciones de elisp como la mismalooking-at\ntambién funciona;M-: (looking-at "\n") RETse 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?
\ndoesn ' 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-jes la forma más confiable de escribir una nueva línea en un indicador.
(re-search-forward "\n")funciona bien para mí.abc\r\nen lugar deabc\n.\nan. mi búfer está en modo fundamental. Esto le sucede a cualquier texto, por lo que cualquier texto con una nueva línea o letranes un ejemplo funcional\r\narn