バックスラッシュ「\」エスケープ文字は実際に何をエスケープしますか?


13

バックスラッシュは実際に何を逃れますか?

エスケープ文字として使用されます。しかし、私はいつも何が逃げているのか、何が逃げているのかと思います。

「\ n」は新しい行を指定することを知っています。しかし、エスケープはどこに来るのでしょうか?なぜそれと呼ばれるのですか?


15
それは私のひもを台無しにするとき、私の怒りを逃れています。
ジョエルイーサートン

回答:


37

バックスラッシュは、次の文字に特別な意味があることをコンパイラー/インタープリターに伝えるためのマーカー文字として使用されます。次の文字の意味は実装次第です。たとえば、Cスタイルの言語では、\ nを使用して改行を意味し、\ tを使用してタブを意味します。

単語「エスケープ」の使用は、実際には、テキストの解析から一時的にエスケープし、後続の文字が異なる方法で処理される別のモードに入ることを意味します。


8
文字に応じて、バックスラッシュは、次の文字に特別な意味がないことをコンパイラー/インタープリターに伝える場合があります。たとえば、引用符をエスケープする場合。
ライアンキナル

12
または自分自身をエスケープします。
マルフィスト

12

:))

これは、エスケープシーケンスEsc(エスケープ)キーの用語に関連する用語です。

キャラクター自体は他のキャラクターから「逃げる」ことはありません。エスケープ文字に続く文字(例では\ nなど)、一部のアプリケーションで通常のnとして使用される運命をエスケープし、代わりに改行として使用されると言うかもしれません。


3

エスケープシーケンスには、帯域外通信の概念と多くの共通点があります。

多くの端末の制御シーケンスをリードするESCや、古い5ビットBaudotコードのレベルシフトインジケーターなど、通信の人々がシフト文字と呼ぶものを記述するためにも使用されることがあります。

シリアルポートを介してファイル転送を行っており、反対側のコンピューターとネゴシエートするとしましょう:「OK、ここにファイルが来ます」。一般的な場合、すべての文字が有効なファイル文字である可能性があるため(ASCIIファイルの場合)、いくつかの問題があります。

  • ストリームの終わりがどこにあるかをどのようにして知るのですか?
  • 一部のスキームは、一部の言語の文字列のように、ASCII NUL(ゼロ)を使用して終了しますが、その文字をファイルに含めることはできません。ファイル転送などの一部の設定では許可されません。ゼロは有効な文字である可能性があります。
  • 最初に予想されるファイル長を送信できますが、中止する必要がある場合はどうなりますか?

コンピューティングの歴史を通じて、さまざまな人々がこの問題を回避するために多くの異なる方法を実装してきました。

プログラミング言語のリテラル文字列の場合、同様の問題です。最初の引用には、「文字列が来ます-別の引用が来るまで読み始めてください」とあります。もちろん、引用文字を送信するという問題があるため、スラッシュエスケープシーケンスを発明しました。スラッシュに続いて引用符が表示される場合、それは文字列の終わりではなく、リテラル引用符です。残念なことに、クモを飲み込んでハエを食べました。これは、スラッシュとクォートの文字通りの組み合わせを送信できないためです。そのため、スラッシュを別のスラッシュでエスケープできます。したがって、スラッシュ-スラッシュはスラッシュを意味し、スラッシュ-引用は引用を意味します。これにより、キャリッジリターン、ラインフィード、タブなど、印刷できない文字や印刷が難しい文字にスラッシュを使用できました。


3

それは構文解析コンテキストからの脱出であり、それはnとしてではnなくとして解釈されることを(何と悪役なのか)要求していnewlineます。

最も興味深い違いは、エスケープ引用文字"(または他の多くのシンボル)が行うように構文解析コンテキストを切り替えず"、前のコンテキストに戻るために別の(または他のシンボル)を要求することです。彼らは少し気を逸らしますが、できるだけ早く道に戻ります。

xmlとjsonの登場以来、誰もパーサーを記述していないように思えるので、コンテキストの解析についてはもう誰も話しません。いくつかの問題は主流になるのをやめ、そのようなニッチで奇妙なニッチの概念にとどまり続けます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.