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\nodpovídá$pozici mezica\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-qje výchozí vazba proquoted-inserta 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-jvždy funguje. Ale když používáte funkce elisp jako stejnélooking-at\n, funguje to také;M-: (looking-at "\n") RETbude 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?
\nnení ' 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-jje nejspolehlivější způsob, jak do řádku zadat nový řádek.
(re-search-forward "\n")funguje mi dobře.abc\r\nmístoabc\n.\ndon. 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ísmenemnje fungujícím příkladem\r\ndorn