[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

エスケープ文字

pointこの用語のポイント

point特別な意味を無効にしてくれる文字だよ

pointあるいは特別な意味を付与するための文字だよ

point正反対の2つの意味があるから気を付けてね

スポンサーリンク

簡単に書くよ

エスケープ文字とは

そいつを前に置くと特別な意味が無効になるよ!な文字のこと。
あるいは

エスケープシーケンス(改行とかを普通の文字の組み合わせで表現したもの)として認識させるための文字のこと
です。

image piyo

詳しく書くよ

おぉ、同じ用語で正反対の意味だ。

1.特別な意味を無効にするための文字
2.特別な意味を付与するための文字


が「エスケープ文字」です。

まずは前者の意味から解説していきます。

ズバリ!

文字が持つ特別な意味を無効にするために置く文字が「エスケープ文字」です。

エスケープ文字

例えば「^」という文字には「~で始まる」という特別な意味があるとしましょう。
「^」は「~で始まる」なので「^a」と書くと「『a』で始まる」の意味になります。
コンピュータさんに「『^a』を探して!」と命令すると、コンピュータさんは「『a』で始まるもの」を探してくれます。

エスケープ文字2

この前提で、文字通り「^a」を探したい場合は、どうすれば良いでしょう?
「『a』で始まるもの」ではなく「^a」を探したいのです。

エスケープ文字3

コンピュータさんに「『^a』を探して!」と命令すると、コンピュータさんは「『a』で始まるもの」を探してくれます。
「^a」は探してくれません。

エスケープ文字4

困りました。

ここで登場するのがエスケープ文字です。

例えば「\」がエスケープ文字だったとします。
エスケープ文字は特別な意味を無効にしてくれる文字です。

このエスケープ文字「\」を特別な意味を持つ文字の前に置くと、その文字の持つ特別さが無効になるのです。

例えば「\^」と書いたとしましょう。

「^」には「~で始まる」という特別な意味がありました。
……が、その特別さが無効になって、文字通り「^」の意味になります。
一息で説明すると「『^』には『~で始まる』という特別な意味があったけど、それは無効で普通に『^』って考えてね!」です。

同じように「\^a」と書くと「『^』は『~で始まる』という特別な意味があったけど、それは無効で普通に『^』って考えてね!だから、これは『aで始まる』じゃなくて、文字通りの『^a』だよ」の意味になります。

というわけで、エスケープ文字「\」を「^」にくっつけて、コンピュータさんに「『\^a』を探して!」と命令すると、コンピュータさんは「^a」を探してくれます。

エスケープ文字5

この話に出てきた「\」のように「特別な意味を無効にする文字」がエスケープ文字です。

エスケープ文字6

これが前者の

1.特別な意味を無効にするための文字

なエスケープ文字です。

次に後者の

2.特別な意味を付与するための文字

なエスケープ文字について説明します。

……の前に「エスケープシーケンス」について説明します。

エスケープシーケンスは「改行などの特殊な文字を、普通の文字の組み合わせで表現したもの」です。

例えば、画面に文字列を表示するプログラムを作ったとしましょう。
プログラミング言語にもよりますが、その処理は

print "これは文字列です";

のように書きます。
こう書いたプログラムを実行すると、画面に

これは文字列です

と表示されるのです。
次に、表示する文字列を2行にしてみましょう。

print "これは文字列です
これは2行目です";


としました。
これで

これは文字列です
これは2行目です


と表示されて……くれれば良いのですが実際には表示されません。
エラーになります。

基本的に1つの処理は1行で書くのがルールなのです。
上の例のように2行に分けて書いた場合、コンピュータさんは

print "これは文字列です



これは2行目です";

の2つの処理が書いてあると解釈します。
どちらも単独で見れば書き方ルールに従っていません。
よってエラーになります。

それでは、改行を入力したいときは、どうすれば良いのでしょうか?

そこで登場するのがエスケープシーケンスです。
先程の処理は

print "これは文字列です\nこれは2行目です";

のように書きます。
そうすると画面には

これは文字列です
これは2行目です


のように表示されます。
「\n」が改行と解釈されて2行で表示されるのです。

このときの「\n」がエスケープシーケンスです。
「\n」をコンピュータさんは「改行」だと判断します。
普通の文字の組み合わせですが、特殊な文字だと読み替えてくれるのです。

エスケープ文字7

エスケープシーケンスは、いろいろあります。
「\t」でタブ扱いになったり「\a」で音を鳴らせ!な指示だったり、あれやこれやです。
※どんなエスケープシーケンスが使えるかは、プログラミング言語によって異なります。

エスケープ文字8

さて、ここでエスケープシーケンスの中身を、もう少し分解してみましょう。

「\n」は「\」+「n」です。
これで「改行だよ!」な扱いになります。

「\t」は「\」+「t」です。
これで「タブだよ!」な扱いになります。

「\a」は「\」+「a」です。
これで「音を鳴らせよ!」な扱いになります。

エスケープ文字9

どうやら

「\」+アルファベット

で特殊な意味を表現しているようですね。

このときの「\」が「エスケープ文字」と呼ばれたりします。

エスケープ文字10

これが後者の

2.特別な意味を付与するための文字

であるエスケープ文字です。

例えば「\n」はアルファベットの「n」に対して「\」が「改行」の意味を付与していると解釈できます。
エスケープ文字「\」は、アルファベットに特別な意味を付与している文字ですよね。

ちょっと休憩

ここまで見てきたように「エスケープ文字」という用語には

1.特別な意味を無効にするための文字
2.特別な意味を付与するための文字


の2つの意味があります。

どちらを意図しているかは、前後の文脈から判断してください。

image piyo2

一言でまとめるよ

まぁ「エスケープ文字」って単語が出てきたら「特別な意味を無効にしてくれる文字、あるいは特別な意味を付与するための文字なんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク