Was ist der reguläre Ausdruck für einen Zeilenumbruch?

21

Stimmt in Emacs-Regex \nnicht mit einem neuen Zeilenzeichen überein \n.

  1. Bin ich richtig, dass $die Position zwischen einem neuen Zeilenzeichen und dem Zeichen direkt vor dem neuen Zeilenzeichen übereinstimmt. zB für eine Zeichenkette abc\n, $stimmt die Position zwischen cund \n?
  2. Was ist die Regex, die passt \n?
Tim
quelle
2
Könnten Sie ein minimales Arbeitsbeispiel nennen? Vielleicht fehlt mir etwas, aber es (re-search-forward "\n")funktioniert gut für mich.
Dan
1
Ihre Datei verwenden könnte , \ r \ n für neue Linien und es kann sein , dass Sie \ r in Ihrem regulären Ausdruck enthalten müssen, so abc\r\nstatt abc\n.
Jordon Biondo
@ Dan: CMs und Mx treten beide Spiel \nauf n. Mein Puffer befindet sich im Fundamental-Modus. Dies geschieht bei jedem Text, sodass jeder Text mit einer neuen Zeile oder neinem neuen Buchstaben ein Arbeitsbeispiel ist
Tim
@Jordon: CMs und Mx treffen beide \r\naufrn
Tim
@Tim, ja, denn wenn Sie sie interaktiv eingeben, müssen Sie die zitierten Einfügungen Cq Cm bzw. Cq Cj ausführen. Sie können \ r \ n eingeben, wenn Sie sie in eine Lisp-Zeichenfolge eingeben.
Jordon Biondo

Antworten:

19
  1. Ja. $stimmt mit dem Ende der Zeile , nicht die Newline - Zeichen , die nach dem Ende der Leitung kommt.
  2. Tun C-M-s C-q C-j. C-qist die Standardbindung für quoted-insertund funktioniert auch im Minibuffer. Dieser Ausdruck wörtlich sucht nach einem Newline: C-j.
Kaushal Modi
quelle
1
2. Wollen Sie damit sagen, dass das neue Zeilenzeichen in Emacs Regex nicht als Escape-Sequenz dargestellt werden kann?
Tim
3
Ob interaktiv oder über elisp für eine neue Zeile suchen (zB (looking-at "^J")wo ^ J durch eingeführt wird C-q C-j), der C-q C-jarbeitet Ansatz immer. Aber wenn Sie elisp-Funktionen wie diese verwenden, looking-at \nfunktioniert das auch. M-: (looking-at "\n") RETwird zu true ausgewertet, wenn sich der Cursor am Ende der Zeile befindet (und danach eine neue Zeile).
Kaushal Modi
2
Nur um zu erwähnen, dass regexp-builderSie bei Verwendung eine neue Zeile mit erkennen können [\n].
Nsukami _
@Nsukami_: CMs und Mx treten beide Spiel [\n]auf n.
Tim
13

Als Dan sagt, dass der Regex eine neue Zeile entspricht ist ein Newline.

Sie können einen Zeilenumbruch in einer Zeichenfolge in Anführungszeichen setzen "\n". Hierfür gibt es keine spezielle zusätzliche regexp-spezifische Syntax - Sie verwenden einfach eine neue Zeile, genau wie bei jedem anderen Literalzeichen.

Wenn Sie interaktiv einen regulären Ausdruck eingeben , können Sie die neue Zeile mit einfügen C-qC-j, wie die Antwort von kaushalmodi zeigt.

Phils
quelle
1
Vielen Dank! Ist Cq Cj in Emacs (nicht in Elisp) die einzige Möglichkeit, ein neues Zeilenzeichen zuzuordnen? \nstimmt nicht mit einem neuen Zeilenzeichen überein.
Tim
1
Ja. Nun, genauer gesagt, eine neue Zeile eingeben ist der einzige Weg , ein neue Zeile Zeichen zu finden, wenn interaktiv einen regulären Ausdruck eingeben (da es keine regexp Escape - Sequenz für eine neue Zeile), und C-q C-jist der zuverlässigste Weg , eine neue Zeile an einer Eingabeaufforderung eingeben.
Phils