I Emacs regex matchar \n
inte ett nytt radtecken \n
.
- Stämmer jag att
$
matchar positionen mellan en ny rad och karaktären precis före den nya linjetecknet. för en strängabc\n
,$
matchar positionen mellanc
och\n
? - Vad är regex som matchar
\n
?
Kommentarer
d behöver göra ett citerat inlägg, Cq Cm respektive Cq Cj. Du kan ange \ r \ n om du skriver in dem i en lisp-sträng.
Svar
- Ja.
$
matchar slutet av raden , inte newline-tecknet som kommer efter radens slut. - Gör
C-M-s C-q C-j
.C-q
är standardbindningen förquoted-insert
och fungerar också i minibufferten. Detta uttryck söker bokstavligen efter en ny rad:C-j
.
Kommentarer
- 2. säger du att den nya linjetecknet inte kan representeras som en escape-sekvens i Emacs regex?
- Om du söker efter en ny linje interaktivt eller via elisp (t.ex.
(looking-at "^J")
där ^ J infogas avC-q C-j
),C-q C-j
tillvägagångssätt fungerar alltid. Men när du använder elisp-funktioner som sammalooking-at
\n
fungerar också;M-: (looking-at "\n") RET
kommer att vara sant om markören är i slutet av raden (och där ' är en ny rad efter det). - Bara för att nämna, om du använder
regexp-builder
, kan du ' känna igen en ny rad med[\n]
. - @Nsukami_: CM och Mx förekommer båda
[\n]
tilln
.
Svar
Som Dan kommenterar är regex som matchar en ny rad en ny rad .
Du kan representera en ny rad i en citerad sträng i elisp som "\n"
. Det finns ingen speciell ytterligare regexp-specifik syntax för detta – du använder bara en ny linje, precis som alla andra bokstavliga tecken.
Om du anger en regexp interaktivt då kan du infoga den nya raden med Cq Cj , som kaushalmodis svar påpekar.
Kommentarer
- Tack! Är emellertid Cq Cj det enda sättet att matcha ett nytt radtecken i emacs (inte i elisp)?
\n
inte ' matchar inte ett nytt linjetecken. - Ja. Närmare bestämt är att skriva en ny rad det enda sättet att matcha ett nytt linjetecken när du anger en regexp interaktivt (eftersom det inte finns någon regexp-escape-sekvens för en ny rad), och
C-q C-j
är det mest pålitliga sättet att skriva en ny linje vid en prompt.
(re-search-forward "\n")
fungerar bra för mig.abc\r\n
istället förabc\n
.\n
tilln
. min buffert är i grundläge. Detta händer med vilken text som helst, så all text med ny rad eller bokstavn
är ett fungerande exempel\r\n
tillrn