viエディタでの正規表現 - エスケープ処理でメタ文字の効果を消す -

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

 
 
 
-
-
-
-
 
 
 
 

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

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

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



hello 2014
vi editor
 vi editor.

  vi editor
vim Editor
Vim Editor
a
aa
aaa
aaaa
aaaaa
.
*
^
$
/
\
[
]
<
>
{
}

  
3行目の先頭には、空白を1つ入れてあります。
  
4行目は空行です。
  
5行目の先頭には、空白を2つ入れてあります。

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

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

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

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

例えば、


^

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

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

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

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

  
\(円マーク) は日本のみで使われています。
  
\(円マーク) は英語環境での \(バックスラッシュ) のことです。

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


\^

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

円マークを円マークでエスケープできる

実は、\(円マーク) もメタ文字です。 『後ろのメタ文字の効果を打ち消す』という効果を持ったメタ文字というわけです。

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

例えば、


\\

という正規表現では、\(円マーク) 自身を検索することができます

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

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

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

エスケープ処理の例

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

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

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

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

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

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

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

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

続いて \(円マーク) そのものを検索してみましょう。

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

/\\
18行目の \(円マーク) の行へ移動する
18行目の \(円マーク) の行へ移動する

上図のように文字カーソルが18行目の \(円マーク) の位置に移動します

このように、\(円マーク) をメタ文字の前に入力することで、メタ文字の特別な意味を打ち消すことができます。

ページの先頭へ
 

まとめ

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

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