任意の一文字(.)

広告

メタ文字の1つであるドット(.)をパターンの中に記述すると改行(¥n)を除く任意の一文字にマッチします。

例えば次のように使用します。

/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文字にマッチさせることが出来ます。詳しくは別のページで解説します。

サンプルプログラム

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

test1-1.rb

#! ruby -Ku
require "kconv"

def check(str)
  if /ab.cd/ =~ str then
    print(Kconv.tosjis("○") + str + "¥n")
  else
    print(Kconv.tosjis("×") + str + "¥n")
  end
end

print(Kconv.tosjis("「ab.cd」にマッチするかどうか¥n¥n"))

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

上記のプログラムを「test1-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。

任意の一文字(.)

( Written by Tatsuo Ikura )