I Emacs regex samsvarer \n ikke et nytt linjetegn \n.
- Klarer jeg at
$samsvarer med posisjonen mellom et nytt linjetegn og tegnet rett før det nye linjetegnet. for en strengabc\n,$samsvarer med posisjonen mellomcog\n? - Hva er regex som samsvarer med
\n?
Kommentarer
Svar
- Ja.
$samsvarer med slutten av linjen , ikke newline-tegnet som kommer etter slutten av linjen. - Gjør
C-M-s C-q C-j.C-qer standardbindingen forquoted-insertog fungerer også i minibufferen. Dette uttrykket søker bokstavelig talt etter en ny linje:C-j.
Kommentarer
- 2. sier du at det nye linjetegnet ikke kan vises som en rømningssekvens i Emacs regex?
- Enten du søker etter en ny linje interaktivt eller via elisp (f.eks.
(looking-at "^J")hvor ^ J settes inn avC-q C-j),C-q C-j-tilnærmingen fungerer alltid. Men når du bruker elisp-funksjoner som den sammelooking-at\nfungerer også;M-: (looking-at "\n") RETvil være sant hvis markøren er på slutten av linjen (og der ' er en ny linje etter det). - Bare for å nevne, hvis du bruker
regexp-builder, kan du ' gjenkjenne en ny linje med[\n]. - @Nsukami_: CMs og Mx forekommer begge
[\n]tiln.
Svar
Som Dan kommenterer, er regex som samsvarer med en ny linje en ny linje .
Du kan representere en ny linje i en sitert streng i elisp som "\n". Det er ingen spesiell ekstra regexp-spesifikk syntaks for dette – du bruker bare en ny linje, akkurat som alle andre bokstavelige tegn.
Hvis du skriver inn en regexp interaktivt så kan du sette inn den nye linjen med Cq Cj , som kaushalmodis svar påpeker.
Kommentarer
- Takk! I emacs (ikke i elisp), er Cq Cj den eneste måten å matche et nytt linjetegn?
\nikke ' matcher ikke et nytt linjetegn. - Ja. Mer spesifikt, å skrive en ny linje er den eneste måten å matche et nytt linjetegn når du skriver inn en regexp interaktivt (ettersom det ikke er noen regexp-escape-sekvens for en ny linje), og
C-q C-jer den mest pålitelige måten å skrive en ny linje på en melding.
(re-search-forward "\n")fungerer bra for meg.abc\r\ni stedet forabc\n.\ntiln. bufferen min er i grunnleggende modus. Dette skjer med hvilken som helst tekst, så enhver tekst med ny linje eller bokstavner et fungerende eksempel\r\ntilrn