În regex-ul Emacs, \n nu se potrivește cu un nou caracter de linie \n.
- Am dreptate că
$corespunde poziției dintre un nou caracter de linie și caracterul chiar înainte de noul caracter de linie. pentru un șirabc\n,$corespunde poziției dintrecși\n? - Care este regexul care se potrivește cu
\n?
Comentarii
Răspuns
- Da.
$se potrivește cu sfârșitul liniei , nu cu caracterul newline care vine după sfârșitul liniei. - Faceți
C-M-s C-q C-j.C-qeste legătura implicită pentruquoted-insertși funcționează și în minibuffer. Această expresie caută literalmente o linie nouă:C-j.
Comentarii
- 2. spuneți că noul caracter de linie nu poate fi reprezentat ca o secvență de evacuare în regex-ul Emacs?
- Indiferent dacă căutați o linie nouă interactiv sau prin elisp (de ex.
(looking-at "^J")^ J este inserat deC-q C-j), abordareaC-q C-jfuncționează întotdeauna. Dar când se utilizează funcții elisp ca aceleași, funcționează șilooking-at\n;M-: (looking-at "\n") RETva evalua la adevărat dacă cursorul se află la sfârșitul liniei (și acolo ' o linie nouă după aceea). - Doar pentru a menționa, dacă utilizați
regexp-builder, ' puteți recunoaște o nouă linie cu[\n]. - @Nsukami_: CM și Mx apar ambele se potrivesc cu
[\n]cun.
Răspuns
După cum comentează Dan, regexul care corespunde unei linii noi este o linie nouă .
Puteți reprezenta o linie nouă într-un șir citat în elisp ca "\n". Nu există o sintaxă specială specifică regexp pentru aceasta – pur și simplu folosiți o linie nouă, exact ca orice alt caracter literal.
Dacă introduceți o regexp interactiv apoi puteți introduce noua linie cu Cq Cj , așa cum subliniază răspunsul lui kaushalmodi.
Comentarii
- Mulțumesc! În emacs (nu în elisp), Cq Cj este singura modalitate de a se potrivi cu un nou caracter de linie?
\ndoesn ' nu se potrivește cu un nou caracter de linie. - Da. Ei bine, mai precis, tastarea unei linii noi este singura modalitate de a potrivi un caracter de linie nouă atunci când introduceți un regexp interactiv (deoarece nu există o secvență de evadare regexp pentru o linie nouă), iar
C-q C-jeste cel mai fiabil mod de a tasta o linie nouă la prompt.
(re-search-forward "\n")funcționează bine pentru mine.abc\r\nîn loc deabc\n.\nlan. bufferul meu este în modul fundamental. Acest lucru se întâmplă oricărui text, deci orice text cu o nouă linie sau literăneste un exemplu de lucru\r\nlarn