- Home ›
- Ruby正規表現の使い方 ›
- 位置の指定 ›
- HERE
行の末尾($)
行の先頭を表す「^」と同じく行の末尾にマッチするメタ文字が用意されています。行の末尾にマッチさせるには「$」を使います。「$」自身は特定の文字にマッチするものではなく行の末尾の位置にマッチします。
書式は次の通りです。
/パターン$/
具体的な例で考えてみます。「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
他のプログラミング言語の場合にはメタ文字「%」は行の末尾ではなく文字列の末尾にだけマッチする場合がありますので注意して下さい。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! 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 )