Yeni satır karakteriyle eşleşecek normal ifade nedir?


23

Emacs'da normal ifade, \nyeni bir satır karakteriyle eşleşmiyor \n.

  1. $Yeni bir satır karakteri ile yeni satır karakterinden hemen önceki karakter arasındaki konumla eşleşen doğru muyum ? mesela bir dize için abc\n, $aralarında pozisyonunu maçları cve \n?
  2. Eşleşen normal ifade nedir \n?

2
Minimum çalışma örneği verebilir misiniz? Belki bir şey eksik, ama (re-search-forward "\n")benim için iyi çalışıyor.
— Dan

1
Dosyanız yeni satırlar için \ r \ n kullanabilir ve bunun abc\r\nyerine normal ifadenize \ r eklemeniz gerekebilir abc\n.
— Jordon Biondo

@Dan: CM'ler ve Mx hem maçı meydana \netmek n. arabelleğim Temel modda. Yeni hat veya harf ile herhangi bir metin, böylece bu, herhangi bir metin olur nbir çalışma örneğidir
— Stack Exchange Hepsi

@Jordon: CM'ler ve Mx maçı hem meydana \r\netmekrn
— Hepsi Stack Exchange

@Tim, evet çünkü bunları etkileşimli olarak giriyorsanız, sırasıyla alıntılanan ekler, Cq Cm ve Cq Cj yapmanız gerekir. Lisp dizesine giriyorsanız \ r \ n girebilirsiniz.
— Jordon Biondo

Yanıtlar:


20
  1. Evet. satır sonundan sonra gelen satırsonu karakteriyle değil satır sonuyla$ eşleşir .
  2. Yap C-M-s C-q C-j. minibuffer C-qiçin varsayılan ciltleme quoted-insertve aynı zamanda çalışır. Bu ifade tam anlamıyla bir yeni satır arar: C-j.

1
2. Yeni çizgi karakterinin Emacs normal ifadesinde bir kaçış dizisi olarak temsil edilemeyeceğini mi söylüyorsunuz?
— Herkes için StackExchange

3
(Örneğin, etkileşimli ya da elisp ile bir yeni satır için arama olsun (looking-at "^J")burada ^ J tarafından sokulur C-q C-j), C-q C-jyaklaşımı her zaman çalışır. Ancak aynı gibi elisp işlevlerini kullanırken looking-at \n; M-: (looking-at "\n") RETimleç satırın sonundaysa doğru olarak değerlendirilir (ve bundan sonra yeni satır varsa).
— Kaushal Modi

2
Sadece, eğer kullanırsanız regexp-builder, ile yeni bir hat tanıyabilirsiniz [\n].
— Nsukami _

@Nsukami_: CM'ler ve Mx hem maçı meydana [\n]etmek n.
— Herkes

14

Dan'ın söylediği gibi , bir yeni satırla eşleşen normal ifade yeni bir satırdır.

Elisp biçiminde alıntılanan bir dizede yeni bir satırı temsil edebilirsiniz "\n". Bunun için özel ek regexp'ye özel sözdizimi yoktur - tıpkı diğer bir gerçek karakter gibi bir satırsonu kullanırsınız.

Etkileşimli bir regexp giriyorsanız C-qC-j, kaushalmodi'nin cevabının işaret ettiği gibi yeni satırı ekleyebilirsiniz .


1
Teşekkürler! Emacs'ta (elisp'te değil), Cq Cj yeni bir satır karakteriyle eşleşmenin tek yolu mu? \nyeni bir satır karakteriyle eşleşmiyor.
— Herkes için StackExchange

1
Evet. Eh, daha spesifik olarak, bir yeni satır yazarak (bir satır için bir regexp çıkış sırası olmadığı için) etkileşimli regexpi girerken, yeni satır karakteri eşleştirmek için tek yoldur ve C-q C-jbir istem de bir yeni satır yazmak için en güvenilir yoldur.
— phils
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.