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.