Qual è la regex per abbinare un carattere di nuova riga?

In Emacs regex, \n non “corrisponde a un nuovo carattere di riga \n.

  1. Ho ragione che $ corrisponde alla posizione tra un nuovo carattere di riga e il carattere subito prima del nuovo carattere di riga. ad es. per una stringa abc\n, $ corrisponde alla posizione tra c e \n?
  2. Qual è la regex che corrisponde a \n?

Commenti

  • Potresti fornire un esempio minimo di funzionamento? Forse ' mi manca qualcosa, ma (re-search-forward "\n") funziona bene per me.
  • Il tuo file potrebbe usare \ r \ n per nuove righe e potrebbe essere necessario includere \ r nella tua espressione regolare, quindi abc\r\n invece di abc\n.
  • @Dan: CM e Mx corrispondono entrambi \n a n. il mio buffer è in modalità fondamentale. Questo accade a qualsiasi testo, quindi qualsiasi testo con una nuova riga o lettera n è un esempio funzionante
  • @Jordon: CM e Mx si verificano entrambi corrispondono \r\n a rn
  • @Tim, sì perché se li inserisci in modo interattivo, ' d deve eseguire rispettivamente un inserto tra virgolette, Cq Cm e Cq Cj. Potresti inserire \ r \ n se li stessi inserendo in una stringa lisp.

Answer

  1. Sì. $ corrisponde alla fine della riga , non al carattere di nuova riga che viene dopo la fine della riga.
  2. Esegui C-M-s C-q C-j. C-q è lassociazione predefinita per quoted-insert e funziona anche nel minibuffer. Questa espressione ricerca letteralmente una nuova riga: C-j.

Commenti

  • 2. stai dicendo che il carattere della nuova riga non può essere rappresentato come una sequenza di escape nella regex di Emacs?
  • Sia che cerchi una nuova riga in modo interattivo o tramite elisp (ad esempio (looking-at "^J") dove ^ J è inserito da C-q C-j), lapproccio C-q C-j funziona sempre. Ma quando si utilizzano funzioni elisp come la stessa looking-at \n funziona anche; M-: (looking-at "\n") RET restituirà true se il cursore si trova alla fine della riga (e dopo ' una nuova riga).
  • Tanto per menzionare, se utilizzi regexp-builder, ' sei in grado di riconoscere una nuova riga con [\n].
  • @Nsukami_: CM e Mx corrispondono entrambi da [\n] a n.

Risposta

Come commenta Dan, la regex che corrisponde a una nuova riga è una nuova riga .

Puoi rappresentare una nuova riga in una stringa tra virgolette in elisp come "\n". Non esiste una sintassi specifica per lespressione regolare aggiuntiva speciale per questo: si utilizza solo una nuova riga, esattamente come qualsiasi altro carattere letterale.

Se si immette unespressione regolare in modo interattivo quindi puoi inserire la nuova riga con Cq Cj , come indica la risposta di kaushalmodi.

Commenti

  • Grazie! In emacs (non in elisp), Cq Cj è lunico modo per abbinare un nuovo carattere di riga? \n non ' t corrisponde a un nuovo carattere di riga.
  • Sì. Beh, più specificamente, digitare una nuova riga è lunico modo per trovare una corrispondenza con un carattere di nuova riga quando si immette un regexp in modo interattivo (poiché non esiste una sequenza di escape regexp per una nuova riga) e C-q C-j è il modo più affidabile per digitare una nuova riga a un prompt.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *