勝手に Java リファレンス / エスケープ文字

戻る

Javaでの主なエスケープ・シーケンス
 プログラムとして特別な意味を持つ記号や制御コードをありのまま渡すには、エスケープ・シーケンス (Escape Sequence)を使います。
 たとえば、Java では、

   "(ダブルコーテーション)

 で囲まれた範囲は文字列リテラルとして解釈されますが、ダブルコーテーション自身を文字列リテラルとして表現するには、

   "\""

 と表記します。
 基本的には、渡したい文字の前に \ (バックスラッシュ)を書くだけです。
 Java では、このほかにも、以下のようなエスケープ・シーケンスがあります。

 
意味 備考
\b バックスペース(backspace) \u0008
\t 水平タブ(horizontal tab) \u0009
\n 改行(linefeed) \u000a
\f 改ページ(form feed) \u000c
\r 復帰(carriage return) \u000d
\" ダブル・クオート(double quote) \u0022
\' シングル・クオート(single quote) \u0027
\\ バックスラッシュ(backslash) \u005c
\Octal 8進数による指定 [例] \0105
\uFFFF ユニコード(unicode) [例] \u00ff



 まめ知識:正規表現エンジン「 java.util.regex 」でのエスケープ・シーケンスの混乱

 JDK 1.4から採用された正規表現エンジン「java.util.regex」には、エスケープ済みの文字列が渡されます。

 ところが、Java の言語仕様のもとで正規表現を表現する場合には、特に注意が必要なケースがあります。

 たとえば、Javaのプログラム上で正規表現として、"(" (左括弧)を渡すには、

  "\\("

 として渡す必要があります。
 
 正規表現にとって "(" (左括弧)は特別な意味の文字であるため、正規表現のルールでは、\ (ダブルコーテーション)でエスケープする必要があるのですが、 \ (ダブルコーテーション)単体では、Javaの言語仕様で次の文字をエスケープする。の意で、つまり、\マークはひとつエスケープして渡されるため、2つのダブルコーテーションが必要になるのです。

 なんだかパズルみたいですね。

 そのほかにも、紛らわしいことはありますが、基本的には、この応用でほとんどうまくいきます。