Emacs正規表現で、\n
が改行文字\n
。
-
$
が、改行文字と改行文字の直前の文字の間の位置に一致することを修正しますか。例:文字列abc\n
の場合、$
はc
と? -
\n
に一致する正規表現は何ですか?
コメント
回答
- はい。
$
は、行末の後に続く改行文字ではなく、行末に一致します。 -
C-M-s C-q C-j
を実行します。C-q
はquoted-insert
のデフォルトのバインディングであり、ミニバッファーでも機能します。この式は文字通り改行を検索します:C-j
。
コメント
- 2。 Emacs正規表現では改行文字をエスケープシーケンスとして表すことができないと言っていますか?
- インタラクティブに改行を検索するか、elispを介して改行を検索するか(例:
(looking-at "^J")
^ J はC-q C-j
)によって挿入され、C-q C-j
アプローチは常に機能します。ただし、同じlooking-at
\n
のようなelisp関数を使用する場合も機能します。M-: (looking-at "\n") RET
は、カーソルが行の終わりにある場合にtrueと評価されます(その後、'改行があります)。 - ちなみに、
regexp-builder
を使用している場合、'は。 - @Nsukami_:CMとMxはどちらも
[\n]
とn
に一致します。
回答
ダンがコメントしているように、改行に一致する正規表現は改行です 。
elispで引用符で囲まれた文字列の改行を"\n"
として表すことができます。これには特別な追加の regexp固有構文はありません。他のリテラル文字とまったく同じように、改行を使用するだけです。
regexpをインタラクティブに入力する場合 次に、kaushalmodiの回答が指摘しているように、 Cq Cj を使用して改行を挿入できます。
コメント
- ありがとう!emacs(elispではない)では、Cq Cjが改行文字に一致する唯一の方法ですか?
\n
は'改行文字と一致しません。 - はい。具体的には、改行を入力するが、入力時に改行文字と一致する唯一の方法です。 regexpはインタラクティブに(改行のregexpエスケープシーケンスがないため)、
C-q C-j
は、プロンプトで改行を入力する最も信頼できる方法です。
(re-search-forward "\n")
私にとっては問題なく動作します。abc\r\n
abc\n
の代わりに。\n
と一致します。n
へ。バッファが基本モードになっています。これはすべてのテキストで発生するため、改行または文字n
のテキストは実用的な例です\r\n
からrn