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 mellomc
og\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-q
er standardbindingen forquoted-insert
og 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
\n
fungerer også;M-: (looking-at "\n") RET
vil 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?
\n
ikke ' 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-j
er den mest pålitelige måten å skrive en ny linje på en melding.
(re-search-forward "\n")
fungerer bra for meg.abc\r\n
i stedet forabc\n
.\n
tiln
. bufferen min er i grunnleggende modus. Dette skjer med hvilken som helst tekst, så enhver tekst med ny linje eller bokstavn
er et fungerende eksempel\r\n
tilrn