メタ文字「^」:文字列の先頭とマッチする

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

(Last modified: )

メタ文字「^」の使い方

指定したパターンが文字列の先頭にある場合だけマッチするようにするにはメタ文字の 1 つである ^ を使います。(メタ文字とはパターンの中で記述可能な特別な意味を持つ文字のことです)。

書式は次の通りです。

/^パターン/

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

〇 abcddd
〇 dddabc

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

〇 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

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