¿Cuál es la expresión regular para que coincida con un carácter de nueva línea?

En Emacs regex, \n no «coincide con un carácter de nueva línea \n.

  1. 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 cadena abc\n, $ coincide con la posición entre c y \n?
  2. ¿Cuál es la expresión regular que coincide con \n?

Comentarios

  • ¿Podría proporcionar un ejemplo mínimo de trabajo? Tal vez ' me falta algo, pero (re-search-forward "\n") funciona bien para mí.
  • Su archivo puede usar \ r \ n para nuevas líneas y puede ser que necesite incluir \ r en su expresión regular, entonces abc\r\n en lugar de abc\n.
  • @Dan: CM y Mx coinciden con \n a n. mi búfer está en modo fundamental. Esto le sucede a cualquier texto, por lo que cualquier texto con una nueva línea o letra n es un ejemplo funcional
  • @Jordon: CM y Mx coinciden con \r\n a rn
  • @Tim, sí, porque si los ingresa de forma interactiva, ' d necesita hacer inserciones entre comillas, Cq Cm y Cq Cj respectivamente. Podría ingresar \ r \ n si los estuviera ingresando en una cadena lisp.

Respuesta

  1. 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.
  2. Haz C-M-s C-q C-j. C-q es el enlace predeterminado para quoted-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 con C-q C-j), el enfoque C-q C-j siempre funciona. Pero cuando se utilizan funciones de elisp como la misma looking-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] con n.

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *