V Emacs regex \n
neodpovídá znaku nového řádku \n
.
- Opravuji, že
$
odpovídá pozici mezi znakem nového řádku a znakem těsně před znakem nového řádku. např. pro řetězecabc\n
odpovídá$
pozici mezic
a\n
? - Co je regex, který odpovídá
\n
?
Komentáře
Odpovědět
- Ano.
$
odpovídá konci řádku , nikoli znaku nového řádku , který následuje po konci řádku. - Proveďte
C-M-s C-q C-j
.C-q
je výchozí vazba proquoted-insert
a funguje také v minibufferu. Tento výraz doslova hledá nový řádek:C-j
.
Komentáře
- 2. říkáte, že nový znak řádku nelze v Emacs regexu reprezentovat jako únikovou sekvenci?
- Ať už hledáte nový řádek interaktivně nebo pomocí elispu (např.
(looking-at "^J")
kde ^ J je vloženoC-q C-j
), přístupC-q C-j
vždy funguje. Ale když používáte funkce elisp jako stejnélooking-at
\n
, funguje to také;M-: (looking-at "\n") RET
bude mít hodnotu true, pokud je kurzor na konci řádku (a poté ' je nový řádek). - Stačí zmínit, že pokud používáte
regexp-builder
, můžete ' rozpoznat nový řádek s[\n]
. - @Nsukami_: CMs and Mx occurs both match
[\n]
ton
.
Odpověď
Jak komentuje Dan, regulární výraz odpovídající novému řádku je nový řádek .
Nový řádek v citovaném řetězci můžete v elispu reprezentovat jako "\n"
. Neexistuje žádná speciální dodatečná syntaxe specifická pro regexp – stačí použít nový řádek, přesně jako jakýkoli jiný doslovný znak.
Pokud zadáváte regexp interaktivně pak můžete nový řádek vložit pomocí Cq Cj , jak zdůrazňuje odpověď kaushalmodi.
Komentáře
- Děkuji! Je v emacsu (nikoli v elispu) Cq Cj jediným způsobem, jak najít nový znak řádku?
\n
není ' n neodpovídá znaku nového řádku. - Ano. Přesněji řečeno, psaní nového řádku je jediný způsob, jak při zadání znaku nového řádku odpovídat znaku nového řádku regexp interaktivně (protože pro nový řádek neexistuje žádná úniková sekvence regexp) a
C-q C-j
je nejspolehlivější způsob, jak do řádku zadat nový řádek.
(re-search-forward "\n")
funguje mi dobře.abc\r\n
místoabc\n
.\n
don
. můj buffer je v základním režimu. To se stane s jakýmkoli textem, takže jakýkoli text s novým řádkem nebo písmenemn
je fungujícím příkladem\r\n
dorn