メタ文字「$」:文字列の末尾とマッチする

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

(Last modified: )

メタ文字「$」の使い方

指定したパターンが文字列の末尾にある場合だけマッチするようにするにはメタ文字の1つである $ を使います。

書式は次の通りです。

/パターン$/

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

〇 abcddd
〇 dddabc

これに対してパターンを "/abc$/" と記述した場合は、 "$" の部分が文字列の末尾とマッチします。そのため "/abc$/" は "abc" のあとに文字列の末尾がある場合だけマッチします。よって "dddabc" はマッチしますが "abcddd" はマッチしません。

× abcddd
〇 dddabc

メタ文字 $ を使用することで指定した文字のあとに文字列の末尾がくる場合だけマッチさせるパターンを記述することができます。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my $str1 = "homepage";
my $str2 = "myhome";

if ($str1 =~ /home$/){
  print $str1."は /home\$/ とマッチします\n";
}else{
  print $str1."は /home\$/ とマッチしません\n";
}

if ($str2 =~ /home$/){
  print $str2."は /home\$/ とマッチします\n";
}else{
  print $str2."は /home\$/ とマッチしません\n";
}

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

文字列の末尾($)とマッチする(1)

文字列の末尾位置とマッチする $ が含まれるパターンが、 2 つの文字列とマッチするかどうかそれぞれ試して結果を画面に表示しました。

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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