Was ist der reguläre Ausdruck für ein Zeilenumbruchzeichen?

In Emacs regex stimmt \n nicht mit einem neuen Zeilenzeichen überein \n.

  1. Stimmt es, dass $ mit der Position zwischen einem neuen Zeilenzeichen und dem Zeichen direkt vor dem neuen Zeilenzeichen übereinstimmt, z Für eine Zeichenfolge abc\n stimmt $ mit der Position zwischen c und ?
  2. Wie lautet der reguläre Ausdruck, der mit \n übereinstimmt?

Kommentare

  • Könnten Sie ein Mindestarbeitsbeispiel angeben? Vielleicht fehlt mir ' etwas, aber (re-search-forward "\n") funktioniert gut für mich.
  • Ihre Datei verwendet möglicherweise \ r \ n für neue Zeilen und es kann sein, dass Sie \ r in Ihren regulären Ausdruck aufnehmen müssen, also abc\r\n anstelle von abc\n.
  • @Dan: CMs und Mx treten beide mit \n auf zu n. Mein Puffer befindet sich im Grundmodus. Dies passiert mit jedem Text, daher ist jeder Text mit einer neuen Zeile oder einem neuen Buchstaben n ein funktionierendes Beispiel.
  • @Jordon: CMs und Mx treten beide mit \r\n bis rn
  • @Tim, ja, denn wenn Sie sie interaktiv eingeben, ' d muss in Anführungszeichen gesetzt werden, Cq Cm bzw. Cq Cj. Sie können \ r \ n eingeben, wenn Sie sie in eine Lisp-Zeichenfolge eingeben.

Antwort

  1. Ja. $ entspricht dem Zeilenende und nicht dem Zeilenumbruchzeichen , das nach dem Zeilenende steht.
  2. Führen Sie C-M-s C-q C-j aus. C-q ist die Standardbindung für quoted-insert und funktioniert auch im Minibuffer. Dieser Ausdruck sucht buchstäblich nach einer neuen Zeile: C-j.

Kommentare

  • 2. Wollen Sie damit sagen, dass das neue Zeilenzeichen in Emacs Regex nicht als Escape-Sequenz dargestellt werden kann?
  • Ob interaktiv oder über elisp nach einer neuen Zeile gesucht wird (z. B. (looking-at "^J") where ^ J wird durch C-q C-j) eingefügt. Der Ansatz C-q C-j funktioniert immer. Bei Verwendung von elisp-Funktionen wie looking-at \n funktioniert dies jedoch auch. M-: (looking-at "\n") RET wird auf true ausgewertet, wenn sich der Cursor am Ende der Zeile befindet (und danach ' eine neue Zeile).
  • Nur um zu erwähnen, wenn Sie regexp-builder verwenden, können Sie ' eine neue Zeile mit .
  • @Nsukami_: CMs und Mx treten beide in Übereinstimmung mit [\n] mit n auf.

Antwort

Wie Dan kommentiert, ist der reguläre Ausdruck, der einer neuen Zeile entspricht, eine neue Zeile

Sie können eine neue Zeile in einer Zeichenfolge in Anführungszeichen in elisp als "\n" darstellen. Hierfür gibt es keine spezielle zusätzliche Regexp-spezifische -Syntax. Sie verwenden lediglich eine neue Zeile, genau wie jedes andere Literalzeichen.

Wenn Sie interaktiv einen Regexp eingeben dann können Sie die neue Zeile mit Cq Cj einfügen, wie die Antwort von kaushalmodi zeigt.

Kommentare

  • Danke! Ist Cq Cj in Emacs (nicht in Elisp) die einzige Möglichkeit, einem neuen Zeilenzeichen zu entsprechen? \n nicht ' passt nicht zu einem neuen Zeilenzeichen.
  • Ja. Nun, genauer gesagt, das Eingeben einer neuen Zeile ist die einzige Möglichkeit, einem neuen Zeilenzeichen bei der Eingabe eines zu entsprechen Regexp interaktiv (da es für eine neue Zeile keine Regexp-Escape-Sequenz gibt) und C-q C-j ist die zuverlässigste Methode, um eine neue Zeile an einer Eingabeaufforderung einzugeben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.