Mi a regex egy új vonalas karakterhez?

Az Emacs regexben a \n nem felel meg egy új sor karakterének \n.

  1. Helyesen állítom, hogy a $ megegyezik az új vonalkarakter és az új sor karaktere előtt álló karakter pozíciójával. pl. egy sztringhez abc\n a $ megegyezik a c és a ?
  2. Mi az a regex, amely megfelel a \n kifejezésnek?

Megjegyzések

  • Tudna adni egy minimális működési példát? Talán ' hiányzik valami, de (re-search-forward "\n") nekem jól működik.
  • Előfordulhat, hogy a fájl új sorokhoz \ r \ n-t használ, és előfordulhat, hogy a \ r-t fel kell vennie a regexpbe, ezért abc\r\n a abc\n helyett.
  • @Dan: A CM-ek és az Mx egyaránt egyezik \n hogy n. a pufferem Fundamentális módban van. Ez bármilyen szöveggel megtörténik, így minden új sorral vagy betűvel ellátott n szöveg működőképes példa
  • @Jordon: A CM-ek és az Mx egyaránt egyezik \r\nrn
  • @Tim, igen, mert ha interaktívan adja meg őket, akkor ' d-nek idézett betéteket kell megtennie, Cq Cm és Cq Cj. Megadhat \ r \ n, ha egy lisp karakterláncba írja be őket.

Válasz

  1. Igen. A $ a sor végére illeszkedik, nem pedig a sor vége után érkező új sor karakter re.
  2. Csináljon C-M-s C-q C-j. A C-q az alapértelmezett kötés a quoted-insert fájlhoz, és a minibufferben is működik. Ez a kifejezés szó szerint keres egy új sort: C-j.

Megjegyzések

  • 2. azt mondja, hogy az új vonalkarakter nem ábrázolható menekülési szekvenciaként az Emacs regexben?
  • Akár interaktívan, akár elisp-en keresztül keresünk új sort (pl. (looking-at "^J") ahol A ^ J szöveget a C-q C-j) szúrja be, a C-q C-j megközelítés mindig működik. De az olyan elisp függvények használatakor, mint ugyanaz, a looking-at \n is működik; A M-: (looking-at "\n") RET igaz lesz, ha a kurzor a sor végén van (és utána ' sa új sor).
  • Csak megemlítve, ha a regexp-builder alkalmazást használja, akkor ' új sor felismerhető a .
  • @Nsukami_: A CM-ek és az Mx egyaránt [\n] és n.

Válasz

Ahogy Dan megjegyzi, az új vonallal egyező regex egy új sor .

Az idézett karakterláncban új sort írhat elisp formában "\n" néven. Ehhez nincs külön speciális regexp-specifikus szintaxis – csak egy új sort kell használnia, pontosan úgy, mint bármely más szó szerinti karaktert.

Ha egy regexpet interaktívan ad meg akkor beillesztheti az új sort a Cq Cj paranccsal, amint arra a kaushalmodi válasza rámutat.

Megjegyzések

  • Köszönöm! Az emacs-ban (nem az elisp-ben) a Cq Cj az egyetlen módja annak, hogy egy új vonalkarakterhez illeszkedjen? \n doesn ' nem illeszkedik egy új vonalkarakterhez.
  • Igen. Nos, pontosabban: újsor beírása az egyetlen módja annak, hogy egy újsoros karaktert illesszen be regexp interaktív módon (mivel egy újsorhoz nincs regexp escape szekvencia), és a C-q C-j a legmegbízhatóbb módszer az új sor gyors beírásához.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük