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 mellemcog\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-qer standardbindingen tilquoted-insertog 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-jfungerer altid. Men når du bruger elisp-funktioner som den sammelooking-at\nfungerer også;M-: (looking-at "\n") RETvil 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å?
\nikke ' 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-jer den mest pålidelige måde at skrive en ny linje på en prompt.
(re-search-forward "\n")fungerer fint for mig.abc\r\ni stedet forabc\n.\ntiln. min buffer er i grundlæggende tilstand. Dette sker for enhver tekst, så enhver tekst med ny linje eller bogstavner et fungerende eksempel\r\ntilrn