大文字と小文字を区別せずにマッチを行う(「/i」修飾子)

オプション修飾子の一つである「/i」を設定すると、パターンが対象の文字列にマッチするかどうか調べるときに大文字と小文字を区別せずにマッチするようになります。ここでは Perl の正規表現で使用する「/i」修飾子の使い方について解説します。

(Last modified: )

「/i」修飾子の使い方

パターンに /i 修飾子を指定すると大文字と小文字を区別せずにマッチを行います。書式は次の通りです。

m/パターン/i

簡単な例で考えてみます。まず /i 修飾子を使用しない場合です。

/Test/

上記の場合、マッチする文字列とマッチしない文字列は次のようになります。

〇 Test
× test
× TEST
× tesT

これに対して /i 修飾子を指定した場合は次のように記述します。

/Test/i

上記の場合、マッチする文字列とマッチしない文字列は次のようになります。

〇 Test
〇 test
〇 TEST
〇 tesT

このように /i 修飾子を指定した場合には大文字と小文字が区別されずにマッチされます。

サンプルコード

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

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

&check1("Test");
&check1("test");
&check1("TEST");

print "----\n";

&check2("Test");
&check2("test");
&check2("TEST");

sub check1{
  if ($_[0] =~ /Test/){
    print $_[0]." は /Test/ にマッチします。\n";
  }else{
    print $_[0]." は /Test/ にマッチしません。\n";
  }
}

sub check2{
  if ($_[0] =~ /Test/i){
    print $_[0]." は /Test/i にマッチします。\n";
  }else{
    print $_[0]." は /Test/i にマッチしません。\n";
  }
}

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

perl sample.pl

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

大文字と小文字を区別せずにマッチを行う(1)

パターンに「/i」修飾子を付けることで大文字と小文字を区別せずにマッチするかどうか調べるようになりました。

-- --

Perl の正規表現で使用する「/i」修飾子の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。