行の末尾($)

広告

行の先頭を表す「^」と同じく行の末尾にマッチするメタ文字が用意されています。行の末尾にマッチさせるには「$」を使います。「$」自身は特定の文字にマッチするものではなく行の末尾の位置にマッチします。

書式は次の通りです。

/パターン$/

具体的な例で考えてみます。「abcdef」と「defabc」と言う2つの文字列に対してパターンを「/abc/」と指定した場合にはどちらの文字列にも「abc」は含まれているため、どちらもマッチします。

abcdef
○ defabc

これに対してパターンを「/abc$/」と記述した場合は、行の末尾の位置に「abc」がある場合だけマッチします。よって「abcdef」はマッチしませんが「defabc」はマッチします。

× abcdef
○ defabc

具体的には次のように記述します。

str = "defabc"

if /abc$/ =~ str then
  print("マッチします¥n")
else
  print("マッチしません¥n")
end

なおRubyにおいてはメタ文字「$」は文字列の末尾だけではなく行の末尾にマッチします。つまり1つの文字列の中に改行が含まれていた場合、改行の直前にもマッチします。

× abcdef
○ abc¥ndef

他のプログラミング言語の場合にはメタ文字「%」は行の末尾ではなく文字列の末尾にだけマッチする場合がありますので注意して下さい。

サンプルプログラム

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

test2-1.rb

#! ruby -Ku
require "kconv"

def check(str)
  print(Kconv.tosjis(str + " は abc$ に"))

  if /abc$/ =~ str then
    print(Kconv.tosjis("マッチします¥n"))
  else
    print(Kconv.tosjis("マッチしません¥n"))
  end
end

check("abcdef")
check("defabc")
check("abc¥ndef")
check("def¥nabc")

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

行の末尾($)

( Written by Tatsuo Ikura )