I Emacs regex matcher \n
ikke et nyt linjetegn \n
.
- Er jeg korrekt, at
$
matcher placeringen mellem et nyt linjetegn og tegnet lige før det nye linjetegn, f.eks. for en strengabc\n
,$
matcher positionen mellemc
og\n
? - Hvad er den regex, der matcher
\n
?
Kommentarer
Svar
- Ja.
$
matcher slutningen af linjen , ikke newline-tegnet som kommer efter linjens afslutning. - Gør
C-M-s C-q C-j
.C-q
er standardbindingen tilquoted-insert
og fungerer også i minibufferen. Dette udtryk søger bogstaveligt talt efter en ny linje:C-j
.
Kommentarer
- 2. siger du, at den nye linjekarakter ikke kan repræsenteres som en escape-sekvens i Emacs regex?
- Uanset om du søger efter en ny linje interaktivt eller via elisp (f.eks.
(looking-at "^J")
hvor ^ J indsættes afC-q C-j
), tilgangenC-q C-j
fungerer altid. Men når du bruger elisp-funktioner som den sammelooking-at
\n
fungerer også;M-: (looking-at "\n") RET
vil være sandt, hvis markøren er i slutningen af linjen (og der ' er en ny linje efter det). - Bare for at nævne, hvis du bruger
regexp-builder
, er du ' i stand til at genkende en ny linje med[\n]
. - @Nsukami_: CMer og Mx forekommer begge
[\n]
tiln
.
Svar
Som Dan kommenterer, er det regex, der matcher en ny linje en ny linje .
Du kan repræsentere en ny linje i en citeret streng i elisp som "\n"
. Der er ingen særlig yderligere regexp-specifik syntaks til dette – du bruger bare en ny linje, nøjagtigt som enhver anden bogstavelig karakter.
Hvis du indtaster en regexp interaktivt så kan du indsætte den nye linje med Cq Cj , som kaushalmodis svar påpeger.
Kommentarer
- Tak! I emacs (ikke i elisp), er Cq Cj den eneste måde at matche et nyt linjetegn på?
\n
ikke ' matcher ikke et nyt linjetegn. - Ja. Mere specifikt er at skrive en ny linje den eneste måde at matche et nyt linjetegn, når du indtaster en regexp interaktivt (da der ikke er nogen regexp escape-sekvens for en ny linje), og
C-q C-j
er den mest pålidelige måde at skrive en ny linje på en prompt.
(re-search-forward "\n")
fungerer fint for mig.abc\r\n
i stedet forabc\n
.\n
tiln
. min buffer er i grundlæggende tilstand. Dette sker for enhver tekst, så enhver tekst med ny linje eller bogstavn
er et fungerende eksempel\r\n
tilrn