トップ > 初級編 > その他 > 正規表現(初級編) >
メタ文字の効果を消すエスケープ処理

  

メタ文字の特別な意味を無くすには

この記事では、メタ文字の特別な意味を打ち消すための『エスケープ処理』について説明します。

なお、この記事でも以下のテキストを例に操作を説明します

  1. hello 2014
  2. vi editor
  3. vi editor.

  4. vi editor
  5. vim Editor
  6. Vim Editor
  7. a
  8. aa
  9. aaa
  10. aaaa
  11. aaaaa
  12. .
  13. *
  14. ^
  15. $
  16. /
  17. \
  18. [
  19. ]
  20. <
  21. >
  22. {
  23. }
 
  
3行目の先頭には、空白を1つ入れてあります。
  
4行目は空行です。
  
5行目の先頭には、空白を2つ入れてあります。

メタ文字のおさらいと問題点

すでに説明したように、正規表現では『メタ文字』と呼ばれる文字を使ってパターンマッチングの条件を指定することができます『メタ文字』とは特別な意味を与えられた文字のことで、例えば、^(キャレット) は行頭を意味します。 同様に、$(ドル記号) は行末を、.(ピリオド) は任意の1文字を意味します。

また、[ ](角括弧) を使って指定範囲内の1文字を表したり、*(アスタリスク) で直前の文字の繰り返しを表せるということも説明しました。

これらの非常に便利な正規表現のメタ文字ですが、困った問題もあります。 それは、^(キャレット) や $(ドル記号) というようなメタ文字自体を検索できないという点です。

例えば、

^

という正規表現では、行頭には一致しますが、文字としての^(キャレット) には一致しません

メタ文字そのものを表すには

正規表現には、『エスケープ処理』と呼ばれる仕組みがあります。 エスケープ処理を行うと、メタ文字の特別な意味が打ち消され、メタ文字自身を表すようになります。

エスケープ処理を行うには、メタ文字の前に \(バックスラッシュ) を入力します

  
\ はバックスラッシュです。 バックスラッシュはUNIX系OSでは \(バックスラッシュ) として正しく表示されますが、Windows では ¥(円マーク) として表示されます。 どちらにしても、日本語キーボードからは ¥(円マーク) で入力します。
  
ウェブ上でのバックスラッシュの表示は、ウェブブラウザによって異なります。 \(バックスラッシュ) として表示するものもあれば ¥(円マーク) として表示されるものもあります。

正規表現では、\(バックスラッシュ) が入力されると、その後ろのメタ文字が、文字そのものとして扱われます。 例えば、

\^

という正規表現は、行頭には一致せずに、文字としての^(キャレット) に一致します

バックスラッシュをバックスラッシュでエスケープできる

実は、\(バックスラッシュ) もメタ文字です。 『後ろのメタ文字の効果を打ち消す』という効果を持ったメタ文字というわけです。

そのため、他のメタ文字と同じように、前に \(バックスラッシュ) を入力して効果を打ち消すことができます

例えば、

\\

という正規表現では、\(バックスラッシュ) 自身を検索することができます

エスケープ処理が必要なメタ文字

エスケープ処理が必要なメタ文字を以下に掲載します。

メタ文字
^
(キャレット)
$
(ドル記号)
.
(ピリオド)
*
(アスタリスク)
[
(左角括弧)
]
(右角括弧)
/
(スラッシュ)
~
(チルダ記号)
\
(バックスラッシュ)
  
上表には、まだ説明していないメタ文字も含まれています。

エスケープ処理の例

実際に \(バックスラッシュ) を使って、メタ文字をエスケープ処理してみましょう。

文字カーソルは文書の先頭にある
文字カーソルは文書の先頭にある

上図のように文字カーソルは文書の先頭にあると仮定して説明を始めます

まずは、^(キャレット) そのものを検索してみましょう。

では、キーボードから /\^<Enter> を入力してください。

/\^<Enter>
15行目の ^(キャレット) の位置へ移動する
15行目の ^(キャレット) の位置へ移動する

上図のように文字カーソルが15行目の ^(キャレット) の位置に移動します

このように、行頭ではなく ^(キャレット) の文字そのものに一致します。

続いて \(バックスラッシュ) そのものを検索してみましょう。

では、キーボードから /\\<Enter> を入力してください。

/\\<Enter>
18行目の \(バックスラッシュ) の行へ移動する
18行目の \(バックスラッシュ) の行へ移動する

上図のように文字カーソルが18行目の \(バックスラッシュ) の位置に移動します

このように、\(バックスラッシュ) をメタ文字の前に入力することで、メタ文字の特別な意味を打ち消すことができます。

  
  

まとめ

正規表現では、\(バックスラッシュ) で、後ろのメタ文字の特別な意味を打ち消すことができます。 \(バックスラッシュ) が入力されると、その後ろのメタ文字が、文字そのものとして扱われます。

正規表現 意味
\
(バックスラッシュ)
直後のメタ文字の特別な意味を打ち消す
\^
(キャレット)
^(キャレット) そのものを表す
\$
(ドル記号)
$(ドル記号) そのものを表す
\.
(ピリオド)
.(ピリオド) そのものを表す
\*
(アスタリスク)
*(アスタリスク) そのものを表す
\[
(左角括弧)
[(左角括弧) そのものを表す
\]
(右角括弧)
](右角括弧) そのものを表す
\/
(スラッシュ)
/(スラッシュ) そのものを表す
\~
(チルダ記号)
~(チルダ記号) そのものを表す
\\
(バックスラッシュ)
\(バックスラッシュ) そのものを表す
メニュー