ドット(.)とバックスラッシュ(\)

正規表現ではある意味を持つ文字が、他のコンテキストではまったく異なる意味を持つことがあります。たとえば、正規表現では、ピリオド(.)は任意の 1 文字と一致させるために使用される特殊文字です。文章では、ピリオド(.)は文末を示すために使用されます。数学では、小数点(.)は数値の整数部分と小数部分を区切るために使用されます。

正規表現は、まず正規表現のコンテキストで特殊文字を評価します。式がピリオドに遭遇すると、任意の 1 文字と一致します。

たとえば、正規表現 1. は次のものと一致します。

  • 11
  • 1A

正規表現 1.1 は次のものと一致します。

  • 111
  • 1A1

IP アドレスを正規表現として指定すると、予測できない結果になります。たとえば、正規表現 0.0.0.0 は次のものと一致します。

  • 0102030
  • 0a0b0c0

正規表現を使用して、元のコンテキストのピリオドを IP アドレスの異なる部分の区切り文字として(他の文字と一致させるために使用される特殊文字としてではなく)正しく識別するには、その旨のシグナルを指定する必要があります。バックスラッシュ(\)がそのシグナルです。正規表現がバックスラッシュに遭遇すると、次の文字をリテラルとして解釈する必要があることを認識します。IP アドレス 0.0.0.0 と一致する正規表現は次のようになります。

0\.0\.0\.0

バックスラッシュを使用して特殊文字をエスケープし、リテラルとして解釈します。次に例を示します。

  • \\(バックスラッシュをエスケープ)
  • \[(角かっこをエスケープ)
  • \{(中かっこをエスケープ)
  • \.(ピリオドをエスケープ)