In Emacs regex komt \n niet “overeen met een nieuw regelteken \n.
- Klopt het dat
$overeenkomt met de positie tussen een nieuw lijnteken en het teken vlak voor het nieuwe lijnteken. bijv. voor een tekenreeksabc\n,$komt overeen met de positie tussencen\n? - Wat is de regex die overeenkomt met
\n?
Reacties
Answer
- Ja.
$komt overeen met het einde van de regel , niet het newline-teken dat na het einde van de regel komt. - Doe
C-M-s C-q C-j.C-qis de standaardbinding voorquoted-inserten werkt ook in de minibuffer. Deze uitdrukking zoekt letterlijk naar een nieuwe regel:C-j.
Reacties
- 2. zeg je dat het teken voor een nieuwe regel niet kan worden weergegeven als een escape-reeks in de Emacs-regex?
- Of je nu interactief naar een nieuwe regel zoekt of via elisp (bijv.
(looking-at "^J")waar ^ J wordt ingevoegd doorC-q C-j), deC-q C-jbenadering werkt altijd. Maar bij het gebruik van elisp-functies zoals hetzelfde werktlooking-at\nook;M-: (looking-at "\n") RETzal waar zijn als de cursor aan het einde van de regel staat (en daarna ' een nieuwe regel). - Gewoon om te vermelden dat als u
regexp-buildergebruikt, u ' een nieuwe regel kunt herkennen met[\n]. - @Nsukami_: CMs en Mx komen beide overeen met
[\n]naarn.
Answer
Zoals Dan opmerkt, de reguliere expressie die overeenkomt met een nieuwe regel is een nieuwe regel .
Je kunt een nieuwe regel in een string tussen aanhalingstekens in elisp weergeven als "\n". Er is geen speciale aanvullende regexp-specifieke syntaxis hiervoor – je gebruikt gewoon een nieuwe regel, precies zoals elk ander letterlijke teken.
Als je een regexp interactief invoert dan kun je de nieuwe regel invoegen met Cq Cj , zoals het antwoord van kaushalmodi aangeeft.
Reacties
- Bedankt! Is Cq Cj in emacs (niet in elisp) de enige manier om een nieuw lijnteken te matchen?
\nniet ' t komt overeen met een teken voor een nieuwe regel. - Ja. Nou, meer specifiek, het typen van een nieuwe regel is de enige manier om een teken voor een nieuwe regel te vinden bij het invoeren van een regexp interactief (aangezien er geen regexp escape-reeks is voor een nieuwe regel), en
C-q C-jis de meest betrouwbare manier om een nieuwe regel bij een prompt te typen.
(re-search-forward "\n")werkt prima voor mij.abc\r\nin plaats vanabc\n.\nnaarn. mijn buffer staat in de fundamentele modus. Dit gebeurt met elke tekst, dus elke tekst met een nieuwe regel of letternis een werkend voorbeeld\r\nnaarrn