行の末尾にマッチする($)

指定したパターンが行の末尾にある場合だけマッチするようにするにはメタ文字の1つである「$」を使います。「$」自身は特定の文字にマッチするものではなく行の末尾の位置にマッチします。ここでは Ruby の正規表現で行の末尾にマッチするメタ文字の「$」の使い方について解説します。

(Last modified: )

行の末尾にマッチする

メタ文字の $ は行の末尾にマッチします。書式は次の通りです。

/パターン$/

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

abcdef
○ defabc

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

× abcdef
○ defabc

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

str = "defabc"

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

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

× abcdef
○ abc\ndef

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

サンプルコード

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

# encoding: UTF-8

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

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

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

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

行の末尾($)

-- --

Ruby の正規表現で行の末尾にマッチするメタ文字の「$」の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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