\]正規表現に含めるために、elisp で文字列を作成しようとしています。文字列を返すと文字列\\]を取得します\\]が、文字列を返すと文字列\]を取得します]。これは私にはまったく意味がありません。ielm からの出力は次のとおりです。
ELISP> "\\"
"\\"
ELISP> "\\]"
"\\]"
ELISP> "\]"
"]"
ここで何が起こっているのか。最初のバックスラッシュが 2 番目のバックスラッシュをエスケープしないのはなぜですか?
あなたが見逃しているのは、文字列が入力するのと同じ方法で印刷されることです。そのため、文字列にエスケープが必要な文字が含まれている場合、その前にバックスラッシュが出力されます。ただし、エスケープを必要としない文字が含まれている場合は、出力されません。
と入力する"\\"と、単一のバックスラッシュ文字を含む文字列が作成されます。これは として出力され"\\"ます。
と入力する"\\["と、バックスラッシュと角括弧の 2 文字を含む文字列が作成されます。これは として出力され"\\["ます。
と入力する"\["と、バックスラッシュが角かっこをエスケープします。角括弧はエスケープする必要がないため、このエスケープは冗長です。したがって、次のように同じ文字列を作成します"[": 単一の角括弧文字を含む文字列。"["角かっこをエスケープする必要がないため、これは として出力されます。