任意の一文字にマッチする(.)

メタ文字の1つであるドット(.)をパターンの中に記述すると改行(\n)を除く任意の一文字にマッチします。ここでは Ruby の正規表現で任意の一文字にマッチするメタ文字「.」の使い方について解説します。

(Last modified: )

任意の一文字にマッチする

メタ文字 . は任意の一文字にマッチします。例えば次のように使用します。

/ab.cd/

上記の場合、ドット(.)は任意の一文字にマッチしますので「abfcd」や「ab0cd」などドット(.)が記述された位置にどんな文字が書かれている場合もマッチすることになります。

注意する点としては任意の一文字ですので必ず一文字必要です。よって「abcd」のように「ab」と「cd」の間に文字が存在しないものや、「abeecd」のように「ab」と「cd」の間に2つ以上の文字が含まれる場合はマッチしません。

マッチするもの:

abhcd
ab4cd
ab#cd

マッチしないもの:

abcd
abppcd

メタ文字(.)はパターン内で何回でも使用することができます。

/ab..cd/

この場合は「ab」と「cd」の間に任意の二文字がある文字列にマッチします。(例:abomcdd)。

/a.b.c.d/

この場合は「a」「b」「c」「d」の各文字の間に1つずつ任意の文字がある文字列にマッチします。(例:a1b2c3d)。

なお正規表現の /m オプション(Regexp::MULTILINE)が指定されている場合はメタ文字(.)は改行にもマッチします。オプションについてはまた別のページで解説します。

またマルチバイトを扱うことが出来る文字コードに設定してある場合はメタ文字(.)は日本語の 1 文字にマッチさせることができます。詳しくは別のページで解説します。

サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

def check(str)
  if /ab.cd/ =~ str then
    puts("○" + str)
  else
    puts("×" + str)
  end
end

puts("「ab.cd」にマッチするかどうか")

check("ab6cd")
check("abycd")
check("ab\tcd")
check("ab\ncd")
check("abcd")
check("abpocd")

下記のように実行して下さい。

任意の一文字(.)

-- --

Ruby の正規表現で任意の一文字にマッチするメタ文字「.」の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。